Ruby解释器优化

时间:2013-05-30 17:49:31

标签: ruby optimization interpreter

我一直在寻找有关Ruby解释器的信息。我知道这是一种解释性语言,我想知道优化是否即时完成。一个简单的例子就是fiz-buzz问题。解释器是否转换尝试解决x%3 == 0&& x%5 == 0到x%15 == 0? 很容易看到gcc标志和它们的作用。有什么地方我可以看到相同的红宝石? 口译员到底做了什么?

2 个答案:

答案 0 :(得分:0)

不是一个真正的答案,而是一个反例:

class Fixnum
  def %(obj)
    obj < 10 ? 0 : 1
  end
end

x = 15

x % 3 == 0 && x % 5 == 0
# => true

x % 15 == 0
# => false

如果不知道x是什么或x#%是如何实现的,那么很难优化此表达式。

答案 1 :(得分:0)

由于它是一种解释型语言,它将一次一行地运行代码,直到第一个错误。关于如何评估每一行有一些优化,但这些也应该出现在其他语言中。例如懒惰的评价:

false && x>4 && x!=0

在false之后是逻辑'和',它只是忽略其余的。如果愿意,您可以让译员在启动时在〜/ .irbrc中加载​​某些内容。