关于php的JIT

php是解释执行的,它的编译过程是属于动态编译,也就是在运行的时候进行编译,与之相对的事运行前编译的静态编译。动态编译与静态编译除了编译时机的不同,还有一个不同之的地方,那就是静态编译是将代码编译成了机器指令,而动态编译并没有编译为机器指令,而是编译成了解释器可识别的指令。即时编译,即just-in-time complication,简称JIT。JIT是动态编译中的一种技术,简单的讲,就是在某段代码第一次执行前进行编译,所以称为即时编译。

与解释执行不同的事,JIT是将源代码编译为机器指令执行,但JIT又与静态编译不同,它是在运行时实时进行的编译,而且JIT并不会把所有代码全部编译为机器码,它只会编译频繁执行的代码。说JIT比解释快,其实说的是"执行编译后的代码"比"解释器解释执行"要快,并不是说编译比解释的过程快,而且JIT编译通常比解释执行要慢一些,如果对执行一次的代码进行即时编译,其效率反而要比解释执行慢,JIT之所以快是因为多次执行抵消了编译所占的世界,显得平均效果高而已。