【问题标题】:Can Ruby be compiled and faster in the future? [closed]Ruby 将来可以编译并更快吗? [关闭]
【发布时间】:2016-02-04 03:04:45
【问题描述】:

C、Java、C# 和 Python 从头开始​​编译。感谢 Facebook,PHP 现在也可以编译并且可以在 HHVM 上运行,从而提高程序的性能。 Ruby 不可编译并且比上述语言慢。 Ruby 是否有可能在未来被编译(比如带有 HHVM 的 PHP)?或者也许有一些原因不能?

【问题讨论】:

  • 欢迎来到 Stack Overflow。您的问题鼓励意见和猜测,而不是具体的答案。请阅读“help center”了解主题信息,阅读“help center”了解不要问的问题。 Ruby 将来可能会编译,但何时以及是否是模糊的。
  • 所有现有的,甚至大多数过去的 Ruby 实现都有编译器:YARV、Rubinius、JRuby、IronRuby、MagLev、Topaz、Cardinal、RubyGoLightly、XRuby、SmallRuby、BlueRuby、Alumina、Ruby.NET、the其他 IronRuby(有两个不同的同名实现)、RedSun、MacRuby、MRuby、RubyMotion,以及可能还有很多我忘记的其他实现。仅有的两个从未有编译器的实现是 IoRuby(从未发布)和 MRI(已弃用且未维护)。 JRuby 最初是一个纯解释器,但后来添加了一个编译器。更有趣的是:……
  • ... IronRuby 最初是一个纯编译器,但后来为了提高性能添加了一个解释器!当然,Ruby 是可以编译的。所有语言都可以编译。编译和解释是......好吧......编译器或解释器(呃!)的特征,而不是语言。性能是快速实施所花费的金钱/资源/人员/博士论文数量的函数。 Java 一开始很慢,只有在 Java 公司开始购买 Smalltalk 和 Lisp 专有技术时才变得很快。 (Oracle HotSpot 的核心仍然只是一个稍加修改的 Smalltalk VM。)
  • 此外,在性能方面,当前的 CPU 架构和操作系统对 Ruby 等语言非常不利。但是还有其他架构,它们更适合。这同样适用于 C:C 速度很快,因为当前的 CPU 和操作系统被明确设计为使 C 语言运行得更快。例如,在最初的 AS/400 上,C 非常慢,因为 AS/400 没有指针、文件、线程、进程、直接内存操作或虚拟内存,所以 C 本质上必须在解释的内部运行提供所有这些功能的模拟器。

标签: ruby performance scalability


【解决方案1】:

这个问题做出了错误的陈述/假设。

  1. 您提到的所有语言(C、Java、C#、Python、 Ruby)都已编译。区别在于何时它们被编译(运行时与预编译)。
  2. Ruby 可以从 1.9 开始预编译为字节码
  3. Ruby 并不比其他语言“慢”只是因为它通常在运行时编译(这是一个主要的误解)。如果预编译代码会更快启动,但预编译代码不会使其运行更快

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2013-10-30
    • 2011-04-13
    • 2018-07-08
    • 1970-01-01
    • 2013-07-22
    • 2012-03-31
    相关资源
    最近更新 更多