http://www.csdn.net/article/2014-12-19/2823234?foxhandler=rssreadrenderprocesshandler
“而JIT所做的则是更进一步,将大量重复执行的字节码在运行的时候编译为机器码,达到提高执行效率的目的。通常,触发JIT的条件是代码或者函数被多次重复调用。”这句话没有弄懂:
1、JIT技术是不是指对编译生成的HHVM字节码(类似ZEND生成的OPCODE)进行二次编译成机器码?都生成机器码了,那岂不是在解释器中不用再解释了?
2、原文中说道PHP7中有一句话:“AST(Abstract Syntax Tree,抽象语法树),目的是在PHP编译过程引入一个中间件,替代直接从解释器吐出opcode的方式。让解释器和编译器解耦,可以减少大量Hack代码,同时,让实现更容易理解和维护。”这个“解耦”也无法理解!
1
tabris17 2015-01-09 17:05:22 +08:00
和LuaJIT PyPy 一个原理
|
2
flash866 OP @tabris17 “目的是在PHP编译过程引入一个中间件,替代直接从解释器吐出opcode的方式。让解释器和编译器解耦,可以减少大量Hack代码,同时,让实现更容易理解和维护。”重点是这个啊!完全看不懂!!
|
4
husinhu 2015-01-09 17:34:12 +08:00
interpreter -> dynamic translator.
一个是用C模拟,那么会对应很多汇编; 后者是直接汇编翻译,并且加上优化。 |