- 浏览: 849253 次
- 性别:
- 来自: lanzhou
文章分类
最新评论
-
liu346435400:
楼主讲了实话啊,中国程序员的现状,也是只见中国程序员拼死拼活的 ...
中国的程序员为什么这么辛苦 -
qw8226718:
国内ASP.NET下功能比较完善,优化比较好的Spacebui ...
国内外开源sns源码大全 -
dotjar:
敢问兰州的大哥,Prism 现在在12.04LTS上可用么?我 ...
最佳 Ubuntu 下 WebQQ 聊天体验 -
coralsea:
兄弟,卫星通信不是这么简单的,单向接收卫星广播信号不需要太大的 ...
Google 上网 -
txin0814:
我成功安装chrome frame后 在IE地址栏前加上cf: ...
IE中使用Google Chrome Frame运行HTML 5
In the not so distant past we launched a Ruby Enterprise Edition sponsorship campaign. We’ve been working hard on the code since that time. And although the campaign target hasn’t been reached, we’ve decided to release it anyway because we believe that this release is of great importance to the community.
Just how important is this release? Well, Twitter has beta tested this release and they’re reporting roughly 30% improvement in throughput. Keep reading to learn more and follow us on @phusion_nl for the latest updates.
Summary of changes
It’s now based on Ruby 1.8.7-p174
Previous REE releases were based on 1.8.6. We were initially reluctant about switching to 1.8.7: many people reported various incompatibility problems introduced by 1.8.7, and it seemed that alternative Ruby implementors were boycotting 1.8.7. However, the tide has now changed. Rails 3.0 will drop support for Ruby versions earlier than 1.8.7, JRuby had recently decided to support 1.8.7 and OS X Snow Leopard as well as all the Linux distros ship 1.8.7. We’ve received a lot of requests from the community for a 1.8.7-based version.
In short, everybody is moving towards 1.8.7, and we can’t afford to stay behind.
We were initially planning to release a final 1.8.6-based version, but after carefully considering the current state of things, we decided to skip the 1.8.6 release and jump directly to 1.8.7. 1.8.7 is also more compatible with 1.9, allowing a smoother transition to future Ruby versions.
The MBARI patches have been integrated
Brent Roman’s MBARI patch set uses a variety of techniques to significantly reduce Ruby’s memory usage. It also adds a bunch of performance optimizations, useful features and bug fixes.
Ruby’s garbage collector scans the C stack conservatively. This means that any data on the C stack that might look like a pointer pointing to a valid Ruby object will be treated like a real pointer, causing the object to be retained during garbage collection. Because of the way Ruby is written and because of compiler optimizations, there may be a lot of such “pointers” on the stack, even when they’re not really pointers but just garbage data that like look pointers.
Brent has refactored and modified many parts of Ruby in order to reduce the possibility of such “garbage pointers” occurring on the stack. As a result, garbage collection will be much more effective. Many objects that would otherwise not have been freed will be freed thanks to the MBARI patches.
As a side-effect of the reduced memory usage, applications typically run faster as well. Not only because applications are less likely to be swapped out, but also because modern hardware’s performance depends greatly on the amount of memory traffic.
Ruby uses an inefficient, linear time algorithm for extending the stack space when switching context between threads and/or continuations. This is mostly noticeable when you have a lot of threads. Brent replaces this with a constant time algorithm, which is much faster.
It adds the methods __file__ and __line__ to the Method, UnboundMethod and Proc classes. Very useful for inspecting large code bases that make heavy use of metaprogramming. These methods are documented in the Ruby Enterprise Edition manual.
We’ve ported his patch set to 1.8.7-p174. Especially Twitter benefited a lot from these patches.
The zero-copy context switching patch have been integrated as an optional feature
Joe Damato and Aman Gupta have created a patch which implements zero-copy context switching in Ruby’s threading system. In Ruby 1.8, whenever Ruby switches context to another thread, it has to copy over the entire thread stack. This is very expensive, and the deeper your function calls are nested, the slower it becomes. The zero-copy context switching patch removes the need to copy any stack data; instead, it keeps all thread stacks at different areas in memory and simply changes the stack pointer. In extreme situations, this patch can increase threading performance by as much as 10 times!
Phusion Passenger is not really affected by this patch because its request handling core is not multithreaded, at least not at this moment. But Mongrel is heavily multithreaded and will benefit tremendously from this patch.
We’ve made this patch compatible with the MBARI patch set, but there are currently some issues with 64-bit platforms, so we’ve disabled it by default. You can enable it by running the REE installer with --fast-threading
Various other minor changes
When compiling REE, binaries are optimized for size (-Os), not speed. See below for an explanation.
The tcmalloc memory allocator has been upgraded to version 1.3
RubyGems upgraded to version 1.3.5.
The Debian package now installs files to /usr/local, so that one doesn’t have to mess with $PATH to get things working.
In practice
This release has been beta tested with Twitter. Evan Weaver reported significant improvements in Twitter’s throughput after having switched to this REE release.
Twitter especially benefited from the MBARI patch set. We’ve found a few unexpected things during the beta testing phase:
We’ve found that optimizing Ruby for code size (compilation with -Os) yields better results that optimizing Ruby for speed (compiling with -O2). Ruby is a very unconventional program and we suspect that optimizing for code size allows more instructions to fit in the CPU instruction cache, resulting in better performance.
Microbenchmarks and synthetic benchmarks such as the Ruby benchmark suite do not show any performance improvements at all, although Twitter was able to measure a significant performance improvement. As always, benchmark results should be taken with a grain of salt.
Other major beta testers include 37signals and Novell. They’re still in the progress of testing, and we’re eager to receive their test results.
Sponsors
Special thanks go out to LVS for acting as a gold sponsor for this release:
LVS has been building and supplying enterprise platforms for the betting and gaming industry in South East Asia, Europe and the UK for more than 10 years. The team at LVS is a balanced mix of gaming industry specialists, technical experts and entrepreneurial leaders. With offices in London and Gibraltar we directly employ over 40 staff.
Our Advanced Betting Platform (a fully internationalized and localized high-availability platform based on Java and Ruby on Rails) is now regarded as the most technically advanced sports book system available in the World, and has been customised to fit the requirements of companies like Victor Chandler in Gibraltar and La Française des Jeux in France.
We also thank the following people and organizations for sponsoring this release:
Matt Gillam, 300.00 USD
Robert Harvey, 250.00 USD
ASPgems SL, 200.00 USD
Jason Lee, 200.00 USD
Sung Jin Won, 200.00 USD
Amedeo Paglione, 100.00 USD
Bret Berger, 100.00 USD
Ernest Ellingson, 100.00 USD
Gavin Stark, 100.00 USD
Hosting Playground Inc., 100.00 USD
LUCAS MELIA, 100.00 USD
Tesly, LLC, 100.00 USD
3hv, 50.00 USD
David Balatero, 50.00 USD
Francesc Esplugas Marti, 50.00 USD
Frans Benders, 50.00 USD
Invisible Jens Christian Fischer, 50.00 USD
Layton Wedgeworth, 50.00 USD
LeeCommerce, LLC, 50.00 USD
Mikhail Platov, 50.00 USD
Revolution Co., 50.00 USD
Trevor Smith, 50.00 USD
Steven Berg, 30.00 USD
Alexey Kovyrin, 25.00 USD
Chris Gaffney, 25.00 USD
Cindy Studebaker, 25.00 USD
Norman Clarke, 25.00 USD
ARP Networks, 20.00 USD
Frank Wöckener, 20.00 USD
Istvan Hoka, 20.00 USD
James Cribbs, 20.00 USD
Luke Randall, 20.00 USD
Roger Pack, 20.00 USD
Trevor Turk, 20.00 USD
Eric DUMINIL, 15.00 USD
@bryanl, 10.00 USD
declanmcgrath, 10.00 USD
David Dollar, 5.00 USD
Joshua Lund, 5.00 USD
Kieran P, 5.00 USD
Download & upgrade
To install Ruby Enterprise Edition, please visit the download page. To upgrade from a previous version, simply install into the same prefix that you installed to last time. Please also refer to the documentation for upgrade instructions.
UPDATE: Snow Leopard support
It looks like tcmalloc has some issues on Snow Leopard, causing the compiler to crash. We’ve just been able to obtain Snow Leopard last weekend (it had been sold out for several weeks) and we haven’t gotten around installing it yet.
To install REE on Snow Leopard, you should run the installer with --no-tcmalloc
发表评论
-
Ruby 1.8 and 1.9 living in harmony
2010-02-22 07:54 889I’m running on OSX, and using M ... -
Metaprogramming in Ruby: It’s All About the Self
2009-11-16 11:28 910After writing my last post on R ... -
Perl vs. Python vs. Ruby
2009-11-07 21:05 1158I’m evaluating Python and Rub ... -
A Teenage Boy Improved Ruby 1.9 Performance Up to 63%
2009-11-06 18:26 903Japanese online magazine, @IT J ... -
Ruby Best Practices - The Complete Class
2009-11-04 16:21 1045A remark: we enabled comment mo ... -
调查显示Ruby北美地区用户量上升
2009-10-30 07:38 585据Evans Data最近针对400名开发用户的调查表明,R ... -
RubyForge将停止工作,RubyGems.org接替Gem hosting服务
2009-10-28 14:14 1846Ruby Gem维护者请注意,数周前,GitHubGitHub ... -
有关Ruby企业版1.8.7的一些介绍
2009-10-18 08:54 1305前几周,Ruby企业版(Rub ... -
3 Ruby Quirks You Have to Love
2009-10-16 10:50 659Ruby’s a fantastic language; we ... -
Distilling JRuby: The JIT Compiler
2009-10-09 08:40 1143The JIT compiler in JRuby is a ... -
Compiling Ruby with MacRuby 0.5b1
2009-10-09 08:33 1276MacRuby 0.5b1 and can be downlo ... -
10月编程语言排行榜:Ruby稳步提升
2009-10-08 08:07 1011新闻来源:51CTO.COMTIOBE今日公布了2009年10 ... -
为你的.NET应用程序添加一个REPL控制台
2009-10-07 12:45 783微软开始推广IronPython和IronRuby,希望它们可 ... -
Installing Ruby 1.8 and 1.9 on Ubuntu from Source
2009-10-05 14:18 920$ sudo apt-get build-dep ru ... -
Compiling Ruby 1.9.1 (stable) on Ubuntu
2009-10-05 14:13 760I found the default ruby inst ... -
JRuby综述:1.4的新特性、JRubyConf议程及MLVM
2009-10-02 08:25 889JRuby 1.4 RC1即将发布,我们来看看新版本都有哪些新 ... -
Ruby DCamp,低迷经济下别开生面的会议
2009-09-22 08:47 999经济的低迷不仅影响了 ... -
Ruby静态分析工具检视:metric_fu, Simian, Saikuro以及其他
2009-09-17 08:59 1493代码质量构成了软件质 ... -
Ruby 1.9.1程序库兼容性纵览
2009-09-15 09:38 1146ruby.1.9.1是1.9.x系列第一 ... -
ruby 1.9 真有这么快吗?
2009-09-14 18:26 1193早在今年2月份,Antonio Cangiano 发表过一份关 ...
相关推荐
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302
ruby-1.8.7-p358-doc-chm.7z 3.65 MB 1,399 Other Other ruby-1.8.7-p358-i386-mingw32.7z 5.12 MB 1,503 i386 Other rubyinstaller-1.8.7-p358.exe 11.69 MB 13,534 i386 .exe (Windows executable)
标题中的"LanguagePack_1.8.7-x64-CN-SVN.rar"表明这是一个针对64位操作系统(x64)的中文语言包,版本号为1.8.7,且与Subversion(SVN)相关。Subversion是一个广泛使用的版本控制系统,用于管理软件项目的源代码和...
ruby-1.8.7-p302.tar.bz2
标题 "ruby-1.8.7-p72-i386-mswin32.zip" 提供的信息表明,这是一个针对i386架构的Windows 32位系统的Ruby编程语言的版本1.8.7,具体补丁级别为p72。Ruby是一种面向对象的、动态类型的脚本语言,由日本人松本行弘于...
"ruby-1.8.7-p72.tar.gz" 是一个特定版本的Ruby发行版,这里的“p72”代表了该版本的补丁级别,意味着它是Ruby 1.8.7版本的一个更新,修复了之前版本中的某些问题和提升了性能。".tar.gz"是Unix/Linux系统中常见的...
标题“ruby-1.8.7-p174-i386-mswin32”指的是一个特定版本的Ruby解释器,适用于32位的Windows操作系统。这个版本是Ruby的1.8.7线中的patchlevel 174,通常表示为Ruby 1.8.7-p174。Ruby是一种面向对象的、动态类型的...
rubyinstaller-1.8.7-p299,rubyinstaller-1.8.7-p299 ruby 最新安装包
rubyinstaller下载 rubyinstaller-1.8.7-p330.exe 下载。
Ruby 1.8.7-p160 是一个历史悠久的Ruby编程环境版本,发布于2009年6月27日。这个版本在当时代表了Ruby编程语言的一个重要里程碑,因为它包含了众多改进和修复,使得开发者能够更高效地编写代码。Ruby是一种面向对象...
在本案例中,我们关注的是专为Windows操作系统设计的Arduino IDE版本——"arduino-1.8.7-windows"。 **Arduino IDE 1.8.7 版本** Arduino IDE 1.8.7是官方发布的稳定版本,针对Windows系统进行了优化,确保在...
《TortoiseSVN-1.8.7-x64:深入理解SVN版本控制系统》 SVN(Subversion)是一种广泛使用的开放源代码版本控制系统,它的设计目标是为了替代早期的RCS(Revision Control System)和CVS(Concurrent Versions System...
rubyinstaller-1.8.7-p358
直接安装就可以运行rb文件了,很方便
CodeGlancePro-1.8.7-signed
32位ARM嵌入式Linux使用的iptables可执行文件
这里我们关注的是"Arduino-1.8.7-windows.zip",这显然是Arduino IDE的一个Windows版本安装包。 **Arduino IDE** Arduino IDE(集成开发环境)是用于编写和上传Arduino程序的主要工具。它支持多种编程语言,主要是...
assertion-1.8.7-sources.jar
Avatar_Utils-1.8.7-py3-none-any.whl.zip
glfw-1.8.7-cp35-cp35m-win32