我最近开始学习Ruby.我知道Ruby是一种解释型语言(尽管"每种"语言都是因为它被CPU解释为机器代码).但ruby解释器如何将用Ruby编写的代码转换为机器代码?我已经读过,解释器不会读取源代码,而是读取字节码,但是我从来没有像在Java中那样编译.那么,这是Ruby为你做的另一件事吗?如果确实如此,它是否在运行时生成字节代码?因为你永远不会像在Java中那样获得.class文件.最重要的是,我读到了Just-In-Time编译器,它显然对字节代码做了一些事情,因此它运行得更快.
如果是上述情况,解释器首先扫描所有源代码,将其转换为字节代码,然后在运行时使用JIT再次编译它?
最后我不是在寻找有关性能方面的答案,我只是想知道它是如何处理的,它经历了哪些阶段以及它在什么时候这样做.
谢谢你的时间.
我正在使用这个插件http://www.ruby-lang.org/en/
但ruby解释器如何将用Ruby编写的代码转换为机器代码?
它没有,至少不是所有的实现.
Afaik只有Rubinius试图做你所描述的,那就是编译机器代码.
我已经读过,解释器不会读取源代码,而是读取字节码,但是我从来没有像在Java中那样编译.那么,这是Ruby为你做的另一件事吗?
是
如果确实如此,它是否在运行时生成字节代码?
是的,差不多.并将其保存在记忆中.交易是下次必须阅读 - >翻译 - >重新执行.
如果是上述情况,解释器首先扫描所有源代码,将其转换为字节代码,然后在运行时使用JIT再次编译它?
不是所有的源代码,只是它需要的东西.然后是的,创建一个字节码表示将其保存在内存中,而不一定是编译为机器代码.
| 归档时间: |
|
| 查看次数: |
5534 次 |
| 最近记录: |