Art*_*cto 15

是.

独立于PHP运行的平台,脚本被编译成相同的字节码并由Zend Engine运行.

与Java的不同之处在于,此编译代码通常不会存储在单独的文件中,并且每次执行时都会重新编译脚本(但请参阅操作码缓存).

  • @EJF一旦开始添加操作码缓存,这种差异就不那么大了,但是我们可以指出一个区别:编译并不是在执行脚本之前完成的,例如,`include`指令可能会在执行开始后触发编译. (2认同)

Ste*_*n C 5

Zend Engine和典型JVM之间的另一个重要区别在于它们执行字节码的方式:

  • Zend引擎直接执行(解释)编译的字节码.(至少这就是我认为发生的事情.我无法从Zend在线文档中确认这一点!)
  • JVM通常使用JIT编译器将字节码编译为本机指令,然后执行本机指令.

实际上,JVM行为比这更复杂.JVM并不总是编译为本机代码,当它们这样做时,它们通常会延迟JIT编译,直到它们认为值得做.在此之前,他们直接执行字节码.

  • 查看Zend的源代码表明它确实直接解释了字节码,而不是将其转换为本机.代码也不漂亮...... (2认同)