NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Rubinius 1.0 兼容 MRI 1.8 且速度与之相当

  • 2009-12-08
  • 本文字数:1225 字

    阅读完需:约 4 分钟

Rubinius,“Ruby 程序员的 Ruby”终于要发布 1.0 版本了。 1.0 版本关注于运行真实应用程序所需的兼容性,性能方面要与 MRI 1.8 不相上下,同时也注重代码质量。

Rubinius 的主要开发者 Evan Phoenix 向 InfoQ 透露了为何该版本如此重要以及它所包含的内容。

1.0 才是我们从 Rubinius 开始之时就一直在做的版本。我们希望能兼容 1.8 并且在性能上与之相近。因为强制遵循 RubySpec,我们目前的兼容性已经很高了。 在速度方面,Rubinius 在很多东西上的速度都已经数倍于 1.8 了。我们力争让所有实现核心类的 Ruby 代码运行起来和 1.8 实现中的 C 代码一样快。在这块我们做的很好,但核心类在某些情况下很有可能会比 1.8 慢。

我们得到了一些来自外部的报告,一些真实的代码在 Rubinius 下要更快些。显然这些结论无法说明 1.0 的所有代码都是如此,但至少能证明我们正在接近这一目标。

Rubinius 能够使用 LLVM(Low Level Virtual Machine)编译器来构建本地代码。请注意,这个特性在 RC1 中默认是关闭的。

LLVM 很棒。在 1.0-rc1 中,你需要在配置时传入–enable-llvm 来构建带有 LLVM 的 Rubinius。在 rc2 时,我们可能会有所改变,默认加入 LLVM,同时如果用户觉得不需要 LLVM,也能选择去除它。 如果在编译时加入 LLVM,会默认开启 JIT,自动将多次运行的方法编译成机器码。我们从 LLVM 中得到了很好的输出,尤其是在使用我们的性能剖析器的时候。它告诉我们哪些方法比较常用,并将之内联进来以提高性能。

Rubinius 早期的关注点集中在完整性方面,这为我们带来了 RubySpec 。现在的焦点是切换到了性能上,还是依旧在完整性上呢?

两者我们都会关注。过去主要是关注完整性,过去的一年里,我们在性能上也投入了不少精力。LLVM 就是一个很直接的产出,而且它带来的回报很高。 Rubinius 的性能越来越好了。在微型基准测试中,我们的结果数倍于 1.8(有的甚至高达几百倍)。但我们知道微型基准测试的结果不能用于真实世界的代码中。为此,我们会查看来自世界各地的结果,有些用户反馈说速度有数倍提升,有的反馈速度差不多,也有报告速度很慢的。

我们目前比较关注那些性能较差的地方。我们做了不少工具帮助隔离并修复性能问题,比方说性能剖析工具。

为了改善性能,我们先着手改善 Ruby 代码本身。这方面还有很长的路要走,优化算法、修正低效代码。

JIT 的改进是另一个改善性能的主要工具。告诉 JIT 如何更有效地将 Ruby 代码编译为机器码是很有收获的事,我们一直在做这方面的工作。

除了性能与兼容性方面的提升,Rubinius 在别的方面也有改进,例如遗漏 end 的错误报告

下面这个问题可能是最有意思的:Rubinius 1.0 能运行 Rails 吗?

当然!在 rc2 里我们应该可以运行 Rails 2.3.5 和 Rails 3。 12 月底会放出 1.0-rc2,人们正好有时间在假期里玩玩。

可以从 Rubinius 的网站上下载到 1.0 的第一个候选版本。现在就来测试一下你 1.8.6 的代码并报告你发现的问题吧。

查看英文原文: Rubinius 1.0 Brings MRI 1.8 Compatibility and Near Speed Parity

2009-12-08 09:451225
用户头像

发布了 135 篇内容, 共 58.7 次阅读, 收获喜欢 43 次。

关注

评论

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

教你3步完成阿里云物联网平台公共实例到企业实例的迁移——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

软件测试/测试开发 | Jenkins中,如何管理用户及其相对应权限?

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

MobaXterm链接linux虚拟机报错Network error: Connection refused

代码的路

mobaxterm

10月15日 Apache IoTDB & SeaTunnel 联合 Meetup | 讲座回顾

Apache IoTDB

还在高投入自建物联网平台?教你如何节省三分之二成本——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

BoCloud博云

博云

容器在公有云上的落地姿势

亚马逊云科技 (Amazon Web Services)

容器 亚马逊云科技 Builder 专栏

数据治理:数据集成的关键技术

用友BIP

北京零基础前端软件培训班学习怎么样

小谷哥

软件测试/测试开发 | Jenkins通过什么方式报警?

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

pip安装报错:No such file or directory 'conda-forge' 没有那个文件或目录 'conda-forge'

代码的路

Python

Vue基础知识和案例展示

代码的路

Vue

软件测试/测试开发 | Jenkins 多任务关联

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

web前端程序员培训前景怎么样

小谷哥

学习大数据开发技术后好找工作吗?

小谷哥

浪潮云分布式云ICP加速千行百业羽化创新

浪潮云

云计算

MarkDown文件插入图片并上传GitHub

代码的路

markdown

Frp流量隐匿对抗排查

领创集团Advance Intelligence Group

内网渗透 Frp 流量编排

SpringBoot实现多线程

代码的路

Java springboot

软件测试/测试开发 | 如何安装Jenkins 插件?

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

玩转物联网平台规则引擎-设备数据与业务应用高效协同——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

看这篇就够了丨基于Calcite框架的SQL语法扩展探索

袋鼠云数栈

闲话 dubbogo 社区

阿里巴巴中间件

阿里云 云原生 dubbo

EMQX在Kubernetes中如何进行优雅升级

EMQ映云科技

运维 物联网 IoT 节点 企业号 1 月 PK 榜

大数据开发课程哪个机构好

小谷哥

Redis的String类型,原来这么占内存

杨同学technotes

redis 底层原理

如何选择适合自己的物联网平台?技巧在这里!——实践类

阿里云AIoT

网络安全 安全 物联网 物联网安全 技术标签

如何使用 rust 写内核模块

阿里巴巴中间件

阿里云 rust 云原生

TensorBoard的使用

代码的路

tensorflow

零基础培训学习大数据课程怎么样

小谷哥

阿里巴巴正式开源云原生应用脚手架

阿里巴巴中间件

阿里云 开源 云原生

Rubinius 1.0兼容MRI 1.8且速度与之相当_Ruby_Mirko Stocker_InfoQ精选文章