Rubinus或MRI 1.9.3(YARV)?

omn*_*nse 17 ruby rubinius yarv ruby-1.9

所以,我有一些问题要问我,我确实浏览了互联网,但没有太多可靠的答案.大多数博客帖子会相互取消,因为他们都赞扬了不同的东西,并有基准来"证明他们的观点"(在我的生活中,我从未见过如此多的矛盾基准).

无论如何,我的问题是:

  • 鲁宾尼斯真的快吗?这个显然诚实的亲Rubinius演讲让我印象深刻.另一件令我困惑的事情是,很多Rubinius都是用Ruby编写的,但不知何故它比C-Ruby更快?那一定是一个非常好的语言实现!
  • EventMachine是否与Ruinius一起使用?据我所知,EventMachine部分依赖Fibers(纠正我,如果我错了),直到1.9才实现.我知道Rubinius最终也会支持1.9; 我不介意等一下.
  • C扩展是否适用于Rubinius?我编写了一个C扩展,它将从TCP流接收的二进制消息"序列化"到Ruby对象中,反之亦然(我想这些细节并不重要,但如果它有助于回答这个问题,我会更新帖子).这可能是很多消息!我设法在Ruby中编写相同的代码(尽管在一个月之后它没有什么意义),但事实证明它在应用程序中是一个真正的瓶颈.所以,我不得不使用C作为我的问题的"解决方案". 编辑:我记得,我使用C进行另一项任务,它是阵列的命中测试方法.基本上它只是检查一个"点"是否在一个多边形内部,它在CRuby中是不可能的慢.
  • 如果之前的答案是"否",那么在Rubinus有C替代吗?我收集的VM是用C++编写的,那么.

一些"奖金"问题:

  • C-Ruby(2.0 +,YARV)是否会摆脱GIL?或者至少修改它以便CRuby支持真正的并行性?
  • 什么是mruby我看到matz正在研究它,就描述而言,它看起来非常棒.与CRuby(性能方面)有何不同?

我为你发动的这场文字风暴道歉!♥

jc0*_*0ke 21

鲁宾尼斯真的快吗?

在大多数基准测试中,是的. RBS基准测试有错误

RBS基准测试没有错误

但基准是......愚蠢.应用程序是我们真正关心的.因此,最好的办法是对应用程序进行基准测试,看看它的表现如何.Rubinius将在MRI上真正发光的两个领域是并行性和内存使用.Rubinius没有GIL,所以你可以利用所有可用的线程.它还具有更复杂的GC,因此通常它可以在GC方面表现更好.

我在2011年10 月份在RubyConf上谈论MagLev时做了那些基准测试

EventMachine是否与Rubinius一起使用?

是的,如果有部分不起作用,则应报告该问题.话虽如此,目前 EM测试并没有传递任何Ruby实现.

C扩展是否适用于Rubinius?

是.我保留了C-exts兼容性问题,所以如果有一个你在Travis上测试过,那么Rubinius希望看到它通过rbx.Rubinius历来对C-api和C-exts有很好的支持,尽管如果有一天Rubinius能够如此快地运行Ruby 而不需要C-exts或C-api会很好.

C-Ruby(2.0 +,YARV)是否会摆脱GIL?或者至少修改它以便CRuby支持真正的并行性?

不,很可能不是.来自RubyConf 2012的线程中,Jesse Storimer对Matz的观点(或缺乏观点)进行了简洁的描述.Koichi Sasada试图移除GIL一次并且MRI性能刚刚消失.埃文·菲尼克斯在创造鲁宾尼斯之前也尝试了一次,但没有取得好成绩.

什么是mruby?

一个可嵌入的Ruby解释器,类似于Lua.Matt Aimonetti有一些文章可能会为你揭晓.