PHP имеет виртуальную машину как Java?

PHP имеет виртуальную машину как Java?

12
задан Christopher Altman 4 August 2010 в 14:21
поделиться

2 ответа

Да.

Независимо от платформы, на которой работает PHP, сценарии компилируются в один и тот же байт-код и запускаются Zend Engine.

Отличие от Java в том, что этот скомпилированный код обычно не сохраняется в отдельных файлах, а сценарии повторно компилируются при каждом выполнении (однако см. Кеши кодов операций).

15
ответ дан 2 December 2019 в 18:17
поделиться

Еще одно важное различие между Zend Engine и обычной JVM заключается в том, как они выполняют байткоды:

  • Zend Engine выполняет (интерпретирует) скомпилированные байткоды напрямую. (По крайней мере, я так думаю. Я не смог подтвердить это в онлайн-документации Zend!)
  • JVM обычно использует JIT-компилятор для компиляции байткодов в родные инструкции, а затем выполняет родные инструкции.

На самом деле, поведение JVM сложнее. JVM не всегда компилируют нативный код, а когда компилируют, то обычно откладывают JIT-компиляцию до тех пор, пока не решат, что это стоит сделать. До этого они выполняют байткоды напрямую.

5
ответ дан 2 December 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: