代码之家  ›  专栏  ›  技术社区  ›  Roja Buck

RoR为什么不利用本机扩展/代码内联技术?

  •  3
  • Roja Buck  · 技术社区  · 16 年前

    ruby社区之外的人(以及一些社区内部的人)经常认为ruby应用程序运行缓慢。对于我们中的许多人来说,这与IO绑定操作等无关。然而,当它成为一个问题时,几乎没有什么可以阻止我们利用本机代码来加快速度。为此,我想知道为什么RoR(它本身就是许多“慢”评论的目标)不使用任何本地元素来加速自己?

    代码库中是否缺少可优化的紧密循环?

    3 回复  |  直到 16 年前
        1
  •  10
  •   John Topley    16 年前

    Rails利用了“本机”(即编译的)扩展,但它将它们作为单独的可选库保留。 nokogiri 作为XML解析器,而不是标准的基于Ruby的解析器。

    Rails可能不会用C/C++等价物替换内部函数,至少有三个原因。

    • 如果你试过 install on Windows a Gem which includes C extensions ,那么您可能已经知道为什么在Rails中使用C代码是个坏主意。
    • Rails可以在标准Ruby和大部分可选Ruby发行版(如JRuby)上运行。在Ruby中使用C代码需要提供Java/Python/。。。相同代码的副本。事实上,带有嵌入式C扩展的GEM目前与JRuby不兼容。
        2
  •  0
  •   rogerdpack    16 年前

    不过,一般来说,它依赖于VM来优化代码。否则,它将很难在ruby的所有平台上工作。

        3
  •  0
  •   ejunker    15 年前