阅读更多
Ruby Enterprise Edition (REE) 是标准Ruby解析器的改进版本,号称能够让rails应用节约1/3的内存使用量,并且有有更好的性能提高。最近它发布了新版本,包括了如下新特性:
1. GC的改进,提高服务器的GC性能
2. 更好的Max OS X系统支持
3. 更好的64操作系统支持,在64位的FreeBSD 7和64位的Ubuntu 8.10 Server测试通过。
4. 更好的solaris操作系统支持

这次的更新对64位支持很不错,因为目前很多rails的应用都跑在64位os上(包括javaeye),据作者说64位上节约的内存在1/4左右

更多的更新信息请参考:
http://blog.phusion.nl/2008/12/05/ruby-enterprise-edition-186-20081205-released-thank-you-sponsors/


          -------------------------------------- 评论分割线 ------------------------------------------

REE(Ruby Enterprise Edition)主要使用了两项技术来提高Ruby的性能和内存分配:

一、Copy On Write技术

当父进程创建子进程的时候,地址空间不并复制到子进程,只有子进程需要写地址空间的时候,才复制地址空间。因此父进程和子进程可以共享只读地址空间,节省内存。使用REE号称节省了25%的内存。

但是Copy On Write的前提是由父进程来创建子进程,才可能共享内存地址空间。无论你是用Nginx/Mongrel/Thin,还是用Lighttpd/FastCGI来跑Rails,其实都是独立启动n个互相之间没有任何关系的进程,所以根本无法利用到Copy On Write。事实上你只有使用Apache/mod_rails的时候才可能得到这项好处。


二、tcmalloc Google开源出来的线程缓存的内存分配技术

tcmalloc当然很好,但问题是64位CPU上仍然无法使用tcmalloc,所以REE在64位CPU的服务器上tcmalloc是被disable掉的。

REE的这两项技术在不同的服务器上面表现如下:

On 32-bit:
- 5% slowdown because of GC patches
- 25% speedup because of tcmalloc
- Net result: 20% speedup.

On 64-bit:
- 5% slowdown because of GC patches
- No tcmalloc available
- Net result: 5% slowdown.

也就是说,如果你在64位CPU的服务器上面跑REE,Ruby性能会下降5%!而如果此时你用的部署方式不是Apache/mod_rails的话,连内存都不会节省一分一毫。

所以先不要着急欢呼。
9
0
评论 共 4 条 请登录后发表评论
4 楼 weilJava 2011-03-21 17:45
用ruby可以获取当前CPU使用率和内存使用的信息吗?
3 楼 t0uch 2008-12-08 18:54
也就是说,如果你在64位CPU的服务器上面跑REE,Ruby性能会下降5%!而如果此时你用的部署方式不是Apache/mod_rails的话,连内存都不会节省一分一毫

所以到现在为止,javaeye还是没有使用这个REE,至少,内存泄漏的问题应该没有了吧?
2 楼 ruvuoai 2008-12-08 10:58
2天不见,多了这么多东西南北,世界真实无时无刻滴不再变化呀!!
1 楼 reeze 2008-12-07 09:26
不过他们的下载链接有问题。下不下来~

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • dbpanel:laravel应用程序开发人员工具

    dbpanel 介绍 dbpanel是用于laravel应用程序的开发人员工具。 您可以通过调用controller的namepspace@method来测试controller的操作方法,并保存它们以备将来使用。 您还可以运行artisan命令,对可用方法及其所有相关文档和参数类型进行名称空间查找。 :loudspeaker: 您还可以在同一面板中轻松快捷地访问laravel应用程序的database 。 该包装中有一些很酷的过滤器。 您可能还会查看表的列类型和索引。 您还可以更新和删除过滤的数据。 :loudspeaker: 您也可以通过在vue chrome扩展工具中单击open file ,在代码编辑器(phpstorm,vscode)中打开vue组件。 安装 :satellite_antenna: composer require niaz/dbpanel --dev 发布资产 :electric_plug: php artisan vendor:publish --tag=d

  • Delphi中数据的自动录入

    在Delphi数据库应用系统的数据录入过程中,有些数据是保存在Excel中的;有些是保存在纸张上的;还有一些是需要新增加的,由于各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,还降低了工作效率。下面就这个问题进行论述。   1、利用Delphi调用Excel   Delphi中已经带了Word与PowERPoint的例子,因为Excel的调...

  • Pannel DB支持定时文件、数据库备份、系统防御、监控告警、中间件安装

    dsback一键解决centos下的数据库以及文件备份问题

  • delphi轻松实现输入法编程

    2019独角兽企业重金招聘Python工程师标准>>> ...

  • 新增MariaDB数据库管理、支持多版本MySQL数据库共存,1Panel开源面板v1.6.0发布

    新增MariaDB数据库管理、支持多版本MySQL数据库共存、支持定时备份系统快照

  • refman 5.7 en mysql_实战三种方式部署 MySQL5.7

    作者:北京运维常见的 MySQL 安装方式有如下三种:RPM 包方式:这种方式安装适合对数据库要求不太高的场合,安装速度快;通用二进制包方式:安装速度相较于源码方式快,可以自定义安装目录。源码编译安装:安装过程比较慢,机器性能不好的情况下,大约需要30分钟左右,通常适用于mysql定制化的安装,比如需要加入一些第三方的插件及依赖库等环境说明OS 版本MySQL 版本CentOS7.5.18045...

  • Delphi使用数据控件输入和修改数据

    需要数据库配合的例子,Delphi使用数据控件输入和修改数据,例子中的数据库文件在Database文件夹中,显示数据报表和修改原有数据是本例演示的主要操作,适合刚接触Delphi数据库编程的新手,来学习一下如何在Delphi中使用数据库控件编程。

  • 很多年前D7下自己做的控件DbTree

    很早以前自己做的控件,留做纪念,也可以学习用。使用方法在https://bbs.csdn.net/topics/40141006?list=208443里。

  • Delphi开发学习二:使用ADOQuery控件对SQL数据库表进行操作

    在delphi学习一中,已经使用ADOConnection控件设置属性连接数据库SQL了。 在这里开始使用ADOQuery控件对SQL数据库表进行操作。 首先我们在SQL中创建数据库名为PERSONNELMG_SYS的数据库,然后在这个数据库里创建USER_TABLE表,用来存放用户账户信息。 USER_TABLE表的结构如下图所示: 该表有用户名(USER_NAME) 、用户密码(USE

  • 财务输入控件

    一个中国式的财务数字输入控件,//参考了别人的代码,做一个中国式的财务数字输入控件;比较粗糙,但也学习到不少东西

  • delphi 数据录入通用方法:dbpanel

    提供全部源码 delphi 数据录入通用方法:dbpanel

  • LabWindows中Table控件的下拉列的设置

    1 先看样式 2 样式设置,双击table,添加列以后,编辑列,选择 Combo box 3 全选一列,无法添加值,只有选中一个单元格才可以添加值 -------->>>------->> 4 行的隐藏,其实不是真的隐藏行,而是把对应行的字体颜色改为白色 //历史数据显示到表格 void displayDataTableDB() { char tt[80]; //把数据显示到表格 SetCtrlAttribute(panelHandleDb,...

  • LabWindows操作SQL SERVER

    首要的安装 sqltoolkits.rar,添加 cvi_db.h cvi_db.fp,所有测试环境是LabWindows 2013+SQL SERVER 2008 +WINDOWS7/10 1 全局变量和数据结构 const int channelCount=21; //通道数目 int hdbc; //数据库连接 int hstat; //SQL语句执行 long curRecord=0; /...

  • delphi dbgrideh滚动条问题

    想要实现的效果: 在DBgrideh做了勾选框,在指定行勾选后,在原地位置刷新数据,光标以及滚动条都不变; 在原地刷新数据后,用DBGRID的DataSource.DataSet.Locate自带定位功能,将光标指向原选中行,但是,原选中行的物理顺序的位置变了,.Locat定位后,总是在DBGRIDEH倒数第二行, 本人比较菜,经过一天的折腾,终于找到一种方法,可以实现,虽然用起来效果不怎么好...

  • [导入]通用Delphi数据库输入控件DBPanel的实现

    文章来源:http://blog.csdn.net/nm/archive/2000/08/29/4411.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2000/08/29/816534.html

Global site tag (gtag.js) - Google Analytics