InfoQ

新闻

Ruby基准评测套件初探

作者 Mirko Stocker译者 李明(nasi) 发布于 2008年7月2日 上午1时20分

社区
Ruby
主题
性能和可伸缩性,
运行时
标签
Ruby 1.9,
IronRuby,
Rubinius,
性能评估,
JRuby

随着Ruby实现数目的增长,人们的兴趣已经不仅仅是通过测试集合比较兼容性了(参阅RubySpec项目),而且还包括对不同实现进行基准评测。

Antonio Cangiano启动了Ruby基准评测套件项目。我们对Antonio进行了访问,了解到关于基准评测套件、套件中计划的代码类型以及其他开发者如何参与等信息。

我们询问了Antonio关于Ruby基准评测套件的计划:

Ruby 基准评测套件的主意来源于我们目前缺乏一个标准集合来衡量各个Ruby实现的性能。在我的上一次评比中,我使用的评测集合是我从Ruby 1.9的代码仓库中获取的,因为比较方便。仅凭这些测试显然不适合测量出真实的性能来。一台空转的虚拟机比另外一台快,并不意味着它们在运行系统管理脚本 或者Rails应用的时候具有同样的可比性。

因此标准基准评测的目标是通用化,以便能代表Ruby应用真实环境的诸多方面。目前我们将基准评测分为以下部分:
  • 核心特性:严格执行语言特性的基准评测,除了基本算术以外几乎不需求库中类型。
  • 核心库:专门执行Ruby的核心库中类和方法的评测。
  • 标准库:专门执行Ruby的标准库中类和方法的评测。
  • 小型评测:远离真实环境的小型通用评测。例如,对于从计算机语言评测游戏中引入的评测或者是一些经典算法。
  • 真实环境:可能是最有趣的分类了,它包括了从真实环境的程序中提取的大型评测。例如,一个优秀的日志处理脚本是很适合这个分类的。
从目前收集到的反馈和一些可选Ruby实现的开发者们(包括GemStone、Microsoft、Engine Yard和Sun的开发者们)的兴趣程度来看,我相信这个项目成功很可能会成功。

我们也询问了关于他如何组织评测的,Antonio回答到:

目前他们还都是单独的基准评测,不过我计划编写一个脚本来运行它们并报告一些测试值,包括CPU时间和内存使用。很大可能下一次评测仅仅分析执行时间,但是从长远来看内存消耗是不可忽视的,这也是服务器的一个特别重要的方面。

Tim Bray已经重新启动他的RX Ruby分词器并贡献到评测套件当中。Antonio也号召其他人来为套装做贡献:

这个项目是开源项目,基于MIT证书发布,所以欢迎任何人来贡献。我们目前托管在GitHub之上,普通贡献者可以对代码仓库进行写操作。那些对于GitHub或者Git不熟悉的贡献者们,也可以将基准点通过email发送给我(acangiano at gmail dot com)或者直接通过我们的Google群组

最佳的基准测试往往是你自己的程序,所以最有价值的贡献莫过于从真实程序中抽取的那些了,最好是来自于不同的类型(文本处理、XML处理和数字运算等 等)。刚刚提到的log处理器只是其中一个想法。例如在真实环境评测的部分,我们引入了Borasky先生的矩阵基准评测,因为其代码来自实际的数字计算 (如果不是的话就不会有那么对针对C库的优化了)。

经典算法和其他的小型评测也欢迎提交,然而正如刚才所提到的,我们需要那些能够反应虚拟机在真实环境中的性能的评测点,这样才没有争议。例如,Yarv比Ruby 1.8.6快上三倍,然而在跑真实的应用时平均只快了50%左右。另外要说的是,标准库部分也需要贡献,因为我们需要提升标准库中对类和方法的覆盖率。

我们还有兴趣知道究竟套件是仅专注于Ruby核心和标准库,还是对扩展库也进行基准评测:

我 计划如此,至少是一部分特定扩展,我们不像把套件弄得巨大。我们需要意识到许多Ruby程序员依赖于例如ActiveRecord或者 ActiveSupport这样的库,并希望看到在不同的虚拟机上这些库的表现如何。事实上,在将来的评测中,测试诸如Rails或者Merb这样的流行 框架可不是个坏主意。不成熟的虚拟机尚不能运行它们,但是这也是对评估可选Ruby实现感兴趣的用户来说很重要的信息。

最近的一次Ruby评测是在2007年的12月份,我们询问了下一次的时间安排:

我计划在6月24日运行评测并于30日以前将结果公布在我的blog上。这些天我的大部分时间都用于为Wrox出版社编写图书Ruby on Rails for Microsoft Developers了。 因此24日并不是一个随意的日子。那天这是我第三章的截止日期。如果你关注的话,我将会在Mac OS X、Linux(包括32位和64位)以及Windows Vista上测试Ruby 1.8.x、Ruby 1.9、JRuby、Rubinius、IronRuby、MacRuby、Ruby Enterprise Edition和MagLev(如果支持的话)。你需要为测试用上数天,不过我将在30日来做这件事情。

查看英文原文:Introducing the Ruby Benchmark Suite

相关赞助商

InfoQ中文站Ruby社区,面向Web和企业开发的Ruby,主要关注Ruby on Rails,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Ruby社区提供一流资讯。

没有回复

回复

独家内容

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。