阅读更多
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的调...

  • Delphi XE2 新控件 布局Panel TGridPanel TFlowPanel

    TGridLayou:表格,自动排列容器里的控件,控件大小相同可自定义大小,设定后全部控件大小相同且不变,x行y列,行数列列数根据控件大小变动。TFlowPanel的效果图,里边是panel,左侧是TCategoryButtons,搜索框是TButtonedEdit。堆栈Panel,一行只有一个控件(不能多列),或一列只有一个控件(不能多行)不需要些代码计算左边,自动水平居中 垂直居中 ,横向纵向居中!

  • Delphi控件cxGrid数据录入

    一、数据录入 1、 在TcxGridDBTableView中,设定属性 NewItemRow.Visible = True   2 、在cxgrid中输入数据怎样回车换行     在TcxGridDBTableView中设置属性 OptionsBehavior.FocusFirstCellOnNewRecord = True OptionsBehavior.GoToNextCell...

  • 通用录入系统源码

    通用录入处理系统是基于现有的业务系统库信息录入系统基础上的处理模块,基于以下理念进行开发: 1.1、后台的基本功能模块,如入库处理一类操作,各种程序应采用一致的处理机制。只需要编写一套公共程序代码,在各个处理程序中调用。首先是减少了重复编程的工作量,更有利的是规范操作,而且便于升级。 1.2、包括录入平台和辅助处理程序在内的所有程序,不以完成一个简单任务为目标,而是要对设计需求进行抽象归纳,要具有前瞻性,                   考虑到以后可能的扩展性应用。 1.3、录入程序适用于大部分的新录入表,新增修改库表无需编程操作,只需通过增加修改配置表即可完成。

  • 使用Delphi控件完成界面基本布局 (一)

    本案例仅使用Delphi自身控件实现,为初学APP开发者提供学习帮助(带源码及详细批注)。案例中演示了使用Delphi控件完成界面基本布局,包括TLayout、TVertScrollBox、TGridPanelLayout、TTabControl 等控件的基本使用。

  • 可卷动的DELPHI panel 控件

    很好用的Delphi可卷动 panel控件

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

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

  • 财务输入控件

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

  • Delphi中的DBGrid控件

    在Delphi中,DBGrid控件是一个开发数据库软件不能不使用的控件,其功能非常强大,可以配合SQL语句实现几乎所有数据报表的显示,操作也非常简单,属性、过程、事件等都非常直观,但是使用中,有时侯还是需要一些其他功能,例如打印、斑马纹显示、将DBGrid中的数据转存到Excel97中等等。这就需要我们定制DBGrid,以更好的适应我们的实际需要。本人根据使用Delphi的体会,定制了DBGrid

  • Delphi 在dbgrideh中表格输入数据时有效性的检查(转)

    出处:http://www.haogongju.net/art/1231860; 在数据库系统设计中经常要用到在表格中进行数据录入,如何判断在数据导入时的数据有效性呢?下面介绍几种常用的方法与大家交流。 方法一:Dbgrid是与Table,在Table的Column的OnSetText和OnValidate事件中处理。  1、在OnSetText中判断数据的合法性,如果不合法

  • delphi中panel控件应用

    delphi中的panel控件是怎么使用的?研究了很久了,还是搞不懂,只知道把它放到form上面,其他操作一律不懂了,有谁可以请教一下,如何把其他控件放到里面去呢?谢谢 提问者采纳 直接把控件放到Panel上就行了,如果想把原来的控件添加到panel上,剪切控件再选中panel,黏贴就行了。要先选定panel控件,再在上面拖拉控件或粘贴控件才行。Panel是一个容器控件,可以用来...

Global site tag (gtag.js) - Google Analytics