有64位Ruby吗?

时间:2009-12-01 22:12:51

标签: ruby 64-bit

似乎人们正在为64位平台编译MRI Ruby(1.8.7)。我一直在寻找和阅读一段时间而没有真正得到我想要的答案。我想知道的是,如果你们中的任何人实际上在Ruby中使用了超过4GB的内存?如果以这种方式编译,Ruby真的是64位吗?

我在源代码中发现了注释,表明它没有在64位上进行测试。例如,它表示“BigDecimal尚未在64位整数系统上进行编译和测试。”BigDecimal的注释中。

了解Ruby的其他实现如何以64位进行操作也很有趣。

1 个答案:

答案 0 :(得分:7)

MRI(1.8.x和1.9.x行)都可以编译为64位。

例如,Snow Leopard捆绑了1.8.7编译为64位。这可以在活动监视器中看到,也可以通过询问irb来查看42.size。如果以64位编译,则将获得8(字节),否则将获得4(字节)。

Ruby将能够访问超过4G的ram。例如:

$ irb
>> n = (1 << 29) + 8
=> 536870920
>> x = Array.new(n, 42); x.size
=> 536870921  # one greater because it holds elements from 0 to n inclusive

如果你没有超过4 G或ram,那么获取最后一行将需要一段时间,因为操作系统会交换很多,但即使在我的4 GB机器上它也可以。该过程的虚拟柱塞尺寸为4.02 G。

我更新了过时的bigdecimal html文件中的评论(从2003年3月开始......)