GMTC深圳站本周日开幕,14大专题全部上线,完整日程>> 了解详情
写点什么

Ruby 性能大比拼:最新 Great Shootout 结果公布,二进制 MRI 速度减半

  • 2008 年 12 月 22 日
  • 本文字数:1042 字

    阅读完需:约 3 分钟

Ruby 实现之间的竞争从未结束,尤其在性能上。一年以前, Antonio Cangiano 启动了 Great Ruby Shootout ,比较了 1.8.6、1.9.0、JRuby、Rubinius 以及已经被废弃的 Ruby.NET 实现。

现在,Antonio发布了Great Ruby Shootout 2008 ,比较了1.8.6、1.9.1、JRuby、Rubinius、 Ruby 商业版、IronRuby,以及最新加入的 MagLev。

一定要记得,对于基准测试,要持有怀疑态度,这一点在 Antonio 身上再次得到验证。Antonio发现了首次运行时的一些问题,并公布了修正后的版本,对一些结果进行了修正。他发现的问题之一,是关于 Debian 的包管理系统中的 Ruby 版本:

如果你通过 apt-get 方式来安装 Ruby 的话,我得给你一个大大的警告。如果从源代码编译的话,你会发现速度翻倍了,这是通 过这些测试检测出来的。我以为只是 10~20% 的提升,结果却是 100%。其原因在于,打包好的 Ruby 使用了–enable-pthreads 进行编 译,这样会有“共享库 vs 静态库”的问题。

Prashant Srinivasan 先前已经提及过--enable-pthread 的问题,并解释了它会拖慢系统的原因。

基准测试还显示出,在 Windows 上的 Ruby 1.8.x 运行速度仅有(从源代码编译的)在 Linux 上运行 Ruby 1.8.7 速度的一半。

目前可用的 Ruby 实现中,最快的要数 Ruby 1.9.1 了,而 JRuby 1.1.6RC1 则紧随其后。从基准测试中可以看出,JRuby 似乎是目前执行 Ruby 1.8.x 代码的最快方式了。

而其他的 Ruby 实现,如 Rubinius 和 IronRuby,依然比 MRI 慢很多。基于 Ruby 1.9 的 MacRuby 0.3 也稍稍慢了些,然而似乎它还没有为生产做好准备,生产版本将会是下一个发布版(MacRuby 0.4 预计将会在年底发布)。

MagLev 的结果也兑现了他们的承诺,很多基准测试都要比 MRI 快很多,但还有一些比较慢。长远来看,MagLev 还是一个相当年轻的项目,今年年初才蹒跚起步。

最后要说明重要的一点。Great Ruby Shootout 所使用的基准测试的代码是由众多小测试构成的,用于测试 Ruby 和 Ruby 运行时的各个独立的特性。就此,Antonio 解释说:

很多人对受测 VM 能为 Ruby on Rails 开发栈带来的改进更感兴趣。不要假定如果 VM A 比 VM B 快三倍,那么 Rails 在每分钟处理的请求数也会多三倍。这不可能。只是说,一个更快的 VM 是一个好消息,无疑可以对生产环境的 Rails 应用产生积极的影响。

在 InfoQ 的采访中, Antonio 解释了更多真实的基准测试的需求,并指出他建立 Ruby 基准测试套件项目正是出于此意图。

查看英文原文: Ruby Performance: Great Shootout Results And A Discovery About Binary MRI vs Source Compiled MRI

2008 年 12 月 22 日 09:431385
用户头像

发布了 80 篇内容, 共 16.5 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

微信朋友圈的高性能复杂度分析

Saber

架构实战营

三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理

zhoulujun

矩阵旋转 欧拉角 三维旋转 四元数

JavaScript 开发人员应该理解的 this

devpoint

JavaScript js变量声明 this 8月日更

PNG文件解读(2):PNG格式文件结构与数据结构解读—解码PNG数据

zhoulujun

png jpg

【架构实战营】毕业总结

swordman

架构实战营

架构实战营-毕业设计项目

阿体

模块四作业

秀聪

架构训练营

Kafka 和 Kinesis 之间的对比和选择

HoneyMoose

流处理基本概念(二)

数据与智能

大数据 flink 窗口函数

白手起家之搜索利器Elastic search

卢卡多多

ES 8月日更

安全世界观 | 常见WEB安全问题及防御策略汇总

架构精进之路

安全 8月日更

网络攻防学习笔记 Day98

穿过生命散发芬芳

态势感知 网络攻防 8月日更

数字新基建助推能源互联网“一体两翼”区块链中台应用建设思考

Geek_987812

【前端 · 面试 】HTTP 总结(七)—— HTTP 缓存概述

编程三昧

面试 HTTP 8月日更 HTTP缓存

架构训练营毕业总结

冬天的树

Docker可视化管理工具Portainer

xcbeyond

Docker Portainer 8月日更

Java进程cpu100%问题排查

陈皮的JavaLib

Java Linux 面试 8月日更

当农产品拥有“身份证”区块链技术如何助力农产品溯源监管?

Geek_987812

MongoDB 客户端怎么做负载均衡

海明菌

mongodb 负载均衡 客户端

分享三个可改进的体验

石云升

用户体验 体验设计 8月日更

单向数据流-从共享状态管理:flux/redux/vuex漫谈异步数据处理

zhoulujun

React Redux vuex vue2 状态机

从java注解漫谈到typescript装饰器——注解与装饰器

zhoulujun

Java 注解 装饰器 ts 元数据

深度解析区块链数字票据及其优势

Geek_987812

Tensorflow随笔(一)

毛显新

人工智能 深度学习 tensorflow keras

SLO(服务等级目标)与SLA(服务等级协议)

一个大红包

8月日更

云原生之可观测性【日志篇】 Logstash组件初探

路上的小崔哥

云原生 Logstash 日志 可观测性

JIT-动态编译与AOT-静态编译:java/ java/ JavaScript/Dart乱谈

zhoulujun

Java dart JIT

PNG文件解读(1):PNG/APNG格式的前世今生

zhoulujun

png

Tensorflow API(一)

毛显新

人工智能 深度学习 tensorflow keras

ipfs挖矿怎么选择公司?ipfs挖矿收益怎么计算?

IPFS挖矿收益怎么计算 ipfs挖矿怎么选择公司

模块10作业

dwade

#架构实战营

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

Ruby性能大比拼:最新Great Shootout结果公布,二进制MRI速度减半-InfoQ