标签: yarv

Rubinus或MRI 1.9.3(YARV)?

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

无论如何,我的问题是:

  • 鲁宾尼斯真的快吗?这个显然诚实的亲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(性能方面)有何不同?

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

ruby rubinius yarv ruby-1.9

17
推荐指数
1
解决办法
3948
查看次数

为什么在Ruby中将Regexp对象视为“虚假”?

Ruby有“的普遍想法感实性 ”和“ falsiness ”。

Ruby 确实有两个特定的布尔对象类,TrueClassFalseClass,其中单例实例分别由特殊变量true和表示false

但是,真实性虚假性不仅限于这两个类的实例,该概念是通用的,适用于Ruby中的每个对象。每个对象都是真实的虚假的。规则很简单。特别是,只有两个对象是虚假的

每个其他对象都是真实的。这甚至包括在其他编程语言中被认为是虚假的对象,例如

这些规则是语言内置的,并且不是用户定义的。没有to_bool隐式转换或类似的东西。

这是ISO Ruby语言规范的引文:

6.6布尔值

一个对象可以分为真对象假对象

只有falsenil是伪造的对象。false是该类的唯一实例FalseClass(请参见15.2.6),false表达式 …

ruby regex boolean yarv jruby

15
推荐指数
2
解决办法
165
查看次数

Ruby 2.0字节码导出/导入

我一直在阅读有关新的ruby 2.0功能,并发现它将支持字节码导入/导出:

Ruby 2.0有望简化将预编译的Ruby脚本保存到字节码表示中,然后直接运行它们.

我已经安装了ruby-2.0.0-p0,但是我没有找到任何关于如何导出字节码的信息(或者通常是关于这个问题的文档).此功能是否已实施,如果已实施,我该如何使用它?

我也想知道一些细节.YARV字节码是否应该与平台无关?所有宝石都自动包含在字节码中吗?

ruby bytecode yarv ruby-2.0

10
推荐指数
1
解决办法
2228
查看次数

Ruby的Enumerable#zip是否在内部创建数组?

Ruby中 -有人说,优雅地比较两个枚举器

zip的问题在于它在内部创建数组,无论你通过什么Enumerable.输入参数的长度还有另一个问题

我看了一下YARV中Enumerable#zip的实现,并看到了

static VALUE
enum_zip(int argc, VALUE *argv, VALUE obj)
{
    int i;
    ID conv;
    NODE *memo;
    VALUE result = Qnil;
    VALUE args = rb_ary_new4(argc, argv);
    int allary = TRUE;

    argv = RARRAY_PTR(args);
    for (i=0; i<argc; i++) {
        VALUE ary = rb_check_array_type(argv[i]);
        if (NIL_P(ary)) {
            allary = FALSE;
            break;
        }
        argv[i] = ary;
    }
    if (!allary) {
        CONST_ID(conv, "to_enum");
        for (i=0; i<argc; i++) {
            argv[i] = rb_funcall(argv[i], conv, 1, ID2SYM(id_each));
        }
    }
    if (!rb_block_given_p()) { …
Run Code Online (Sandbox Code Playgroud)

c ruby yarv array-merge

8
推荐指数
1
解决办法
432
查看次数

您期待哪位红宝石翻译?

目前正在开发多种Ruby实现.您对此感到满意,为什么?您是否在生产中积极使用非MRI实施?

一些选项包括:

ruby ironruby rubinius yarv jruby

7
推荐指数
2
解决办法
1153
查看次数

RVM 1.9.1和nokogiri

无法在rvm ruby​​ 1.9.1下安装nokogiri gem.

gem install nokogiri
Run Code Online (Sandbox Code Playgroud)

我越来越 ...

/usr/include/libxml2... no
libxml2 is missing.  try 'port install libxml2' or 'yum install libxml2-devel'
*** extconf.rb failed ***
Run Code Online (Sandbox Code Playgroud)

但我查了一下:

sudo apt-get install libxml2
Run Code Online (Sandbox Code Playgroud)

我得到了:

Reading state information... Done
libxml2 is already the newest version.
Run Code Online (Sandbox Code Playgroud)

这可能是根本的事吗?RVM在用户空间中运行所有内容.

ruby yarv nokogiri rvm

7
推荐指数
2
解决办法
4329
查看次数

如何在Ruby中重新定义Fixnum的+(plus)方法并保留原始+功能?

这引发了我在1.9.2 Ruby中的SystemStackError(但在Rubinius中工作):

class Fixnum
  def +(other)
   self + other * 2
  end
end
Run Code Online (Sandbox Code Playgroud)

但没有super+(基于其他错误).

我如何访问原始+功能?

ruby rubinius yarv super

7
推荐指数
1
解决办法
5601
查看次数

GC.disable的任何性能缺点?

是否有任何GC.disable可能降低性能的情况?只要我使用真正的RAM而不是交换内存,它可以吗?

我正在使用MRI Ruby 2.0,据我所知,它是64位,使用64位Ubuntu:

ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

Linux [redacted] 3.2.0-43-generic #68-Ubuntu SMP Wed May 15 03:33:33 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

ruby optimization garbage-collection yarv

6
推荐指数
1
解决办法
310
查看次数

如何在Ruby中分析垃圾收集

我正在尝试在非Rails应用程序中分析GC,最好使用YARV Ruby.

perftools.rb告诉我,我的大部分CPU时间都花在了garbage_collector(6061(61.4%))上.

我还能够通过perftools.rb获取通过哪些方法创建的对象数量.有些方法比其他方法创建更多的对象,但它并没有极端偏斜.

我从哪里开始?是否有可能获得更详细的信息,说明为什么花费这么多时间做GC?是否可以查看是否花费时间去除对象,或者是否花费在检查对象是否应该被垃圾收集?

我可以访问OS X Lion,Windows 7和Ubuntu 12.04.

ruby profiling garbage-collection yarv

5
推荐指数
1
解决办法
727
查看次数

如何存储和读取RubyVM :: InstructionSequence?

有没有办法将RubyVM :: InstructionSequence存储到文件中并在以后读取?

我尝试Marshal.dump没有成功.我收到以下错误:

`dump': no _dump_data is defined for class RubyVM::InstructionSequence (TypeError)
Run Code Online (Sandbox Code Playgroud)

ruby yarv

5
推荐指数
2
解决办法
860
查看次数

MRI 和 YARV Ruby 实现 - Ruby 1.9 中发生了什么?

据我了解,在 Ruby 1.9 之前,MRI 和 YARV 是 Ruby 编程语言的两个独立实现。

Ruby 1.9 版到底发生了什么变化?是否放弃了 MRI 以支持 YARV?或者这两个代码库以某种方式合并了?

我见过 1.9 之后的 Ruby 版本被称为“MRI”和“YARV”——这些名称中哪个是正确的(或者它们都是正确的)?

ruby terminology yarv mri

1
推荐指数
1
解决办法
1392
查看次数

禁用Ruby 1.9.x的YARV编译器

从命令行运行我的规范与ruby 1.9.x与1.8.7之间的应用程序启动时间有非常明显的差异.我的应用程序使用ruby 1.8.7比使用ruby 1.9.1或1.9.2更快地启动.应用程序启动差异大约为18秒.我的应用程序用1.8.7和1.9.2初始化需要大约5秒钟.

应用程序初始化时间对于生产来说不是什么大问题,但对于BDD开发来说这是一个非常大的问题.每次我更改代码并运行我的规范时,每次迭代我都要再等待18秒.

我假设这个应用程序初始化时间归因于我的应用程序初始化时YARV编译字节码.

我对YARV减慢应用程序初始化速度是否正确,是否有办法在命令行上禁用YARV.能够在我运行我的规格时禁用YARV会非常好.

ruby rspec yarv ruby-1.9

0
推荐指数
1
解决办法
856
查看次数