ruby社区之外的人(以及一些内部人员)经常将ruby应用程序视为缓慢。对于我们中的许多人来说,这是一个无关紧要的,IO绑定操作等。但是,当它确实成为一个问题时,几乎没有什么可以阻止我们利用本机代码来加快速度。为此,我想知道为什么RoR(本身是许多'慢'评论的目标)没有利用任何原生元素加速自己?
有特殊原因吗? 是否缺乏在代码库中优化的紧密循环?
答案 0 :(得分:10)
Rails利用“本机”(又称已编译)扩展,但它将它们保持为独立的可选库。
例如,Rails允许您使用nokogiri
作为XML解析器,而不是标准的基于Ruby的解析器。
至少有3个原因导致Rails可能不会用C / C ++等价替换内部函数。
答案 1 :(得分:0)
它确实使用它们,如果你把它们安装为gems(mysql gem,memcache gem,RedCloth等)。
但是,一般情况下,它依赖VM来优化代码。否则,它很难在ruby所有的平台上工作。
答案 2 :(得分:0)
标准库Date类已被发现是某些Ruby应用程序的瓶颈。 Jeremy Evans在C中实现了Date / DateTime类,并获得了20-200倍的性能提升。