【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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:451228
用户头像

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

关注

评论

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

这款 IDEA 插件太好用了,堪称日志管理神器!

程序知音

GreatSQL 8.0.25-17今日发布

GreatSQL

greatsql greatsql社区

火山引擎DataTester:一个A/B测试,将一款游戏的核心收益提升了8%

字节跳动数据平台

大数据 游戏 AB testing实战 企业号 3 月 PK 榜

基于Redis、Netty、Websocket实现红包雨活动

做梦都在改BUG

低代码工具选项难题浅析

赫杰辉

低代码平台

LLaMA快速上手指南

Baihai IDP

人工智能 自然语言处理 AI ChatGPT 白海科技

限时促销,火山引擎ByteHouse为企业带来一波数智升级福利!

字节跳动数据平台

数据仓库 云原生 促销 特惠 企业号 3 月 PK 榜

GrowingIO企业级产品能力:四大需求,充分满足

Geek_2d6073

从需求管理到迭代规划,优秀的产品经理如何让工作更高效?

万事ONES

5个高并发导致数仓资源类报错分析

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

kubernetes 可观测性:10款开源工具

HummerCloud

Kubernetes 云原生

这 8 类问题,SysOM 2.0 OOM 诊断助你快速定位异常 | 龙蜥技术

OpenAnolis小助手

开源 OOM 操作系统 龙蜥技术 SysOM

架构实战营模块八作业

程序员小张

「架构实战营」

Amazon Global Accelerator 的新增功能 — 互联网协议版本 6(IPv6)支持

亚马逊云科技 (Amazon Web Services)

互联网 亚马逊云科技

别再硬面了!这份Java面试通关手册才是你急需的

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

【值得收藏】9种让你受益终身的数据分析思维

博文视点Broadview

爱了!不愧是GitHub上标星115K的Java教程,全程干货,只讲重点

做梦都在改BUG

Java

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

“一键飞桨”,轻松实现飞桨框架和套件的下载安装!

飞桨PaddlePaddle

框架 飞桨

对比分析数仓中行列存的特性

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

聚焦企业数据生命周期全链路 火山引擎数智平台VeDI发布《数据智能知识图谱》

字节跳动数据平台

大数据 字节跳动 云服务 数据产品 企业号 3 月 PK 榜

供电电源的电磁兼容设计方法?5大要点快速收藏

华秋PCB

电磁 电路 兼容 电源 供电电源

巧用预测,多触点促业务可持续增长

HMS Core

HMS Core

知识蒸馏、轻量化模型架构、剪枝…几种深度学习模型压缩方法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

早有尔闻 | 海尔智家牵头IEEE智能家居语音国际标准

Openlab_cosmoplat

工业互联网 开源社区 智慧生活

LED显示屏闪烁原因及解决办法

Dylan

LED灯闪烁 LED显示屏 全彩LED显示屏

ios系统修复软件:Fix My iPhone 激活版

真大的脸盆

ios Mac 系统修复 Mac 软件

基于 Flink CDC 的实时同步系统

Apache Flink

大数据 flink 实时计算

Databend query result cache 设计与实现

Databend

如何科学管理技术团队的研发交付速率?

LigaAI

DevOps 研发效能 技术管理 效能度量 企业号 3 月 PK 榜

详解AQS的7个同步组件

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 3 月 PK 榜

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