2011-05-09 8 views
5

de Wikipedia:PHP acelerador vs Justo a Tiempo Compilación

mayoría PHP aceleradores de trabajo de cache el bytecode compilado de PHP guiones para evitar la sobrecarga de analizar y compilar código fuente en cada solicitud (algunos o todos de los cuales nunca puede ser ejecutado). Para mejorar aún más el rendimiento, el código almacenado en caché se almacena en la memoria compartida y se ejecuta directamente desde allí, lo que minimiza la cantidad de lecturas de disco lentas y la copia de memoria en tiempo de ejecución.

compilación en tiempo de ejecución:

compiladores JIT representan un enfoque híbrido, con traducción ocurre forma continua, al igual que con los intérpretes, pero con el almacenamiento en caché de código traducido para minimizar la degradación del rendimiento.

por lo que se utilizan aceleradores de PHP como APC en PHP tienen implicaciones equivalentes al rendimiento con "just-in-time" compilación de PHP (suponiendo que es posible hacerlo) .... de hecho, son en realidad la ¿la misma cosa?

Respuesta

5

Por lo tanto, utilizar aceleradores de PHP como APC en PHP tiene implicaciones equivalentes para el rendimiento con compilación de PHP "a tiempo" (asumiendo que es posible hacerlo) ... de hecho, son en realidad ¿la misma cosa?

Mismo concepto, ejecución diferente.

Cuando se habla de JIT en la mayoría de los círculos, se refiere a compilar código de byte de máquina virtual en código de bytes nativo. Por ejemplo, Facebook HHVM es una implementación de PHP que utiliza un JIT engine.

Sin embargo, la máquina virtual nativa de PHP no hace JIT al bytecode nativo. De hecho, no hace JIT en absoluto en el sentido tradicional. Mientras que los archivos completos se compilan en PHP bytecode bajo demanda, esto no es realmente JIT.

Tenga cuidado con el término "acelerador de PHP". De vuelta en los días de PHP4, el bytecode creado por el analizador de PHP podría optimizarse un poco para obtener un mejor rendimiento. Esto no ha sido necesario desde principios de PHP5. El único que APC, Zend "Optimizer" y otros productos "aceleradores" hacen para aumentar el rendimiento de PHP es bytecode de caché. El término "acelerador" ya no se debe usar para eliminar la ambigüedad.

Si está usando PHP estándar, entonces do quiere un caché de bytecode, simplemente manténgase alejado de los productos que dicen que intentan hacer la optimización de código byte de PHP.

+0

Sé que es una publicación anterior, y tal vez las cosas han cambiado, pero Zend optimizer + realmente optimiza el código. Cita: "Además, aplica algunos patrones de optimización de códigos de bytes que aceleran la ejecución del código". https://github.com/zend-dev/ZendOptimizerPlus/ – XzKto

+0

Sí, sucede que esas optimizaciones hicieron una gran, * mucho * mayor diferencia en PHP4. Ahora que está [propuesto para su inclusión en la distribución principal] (https://wiki.php.net/rfc/optimizerplus), será interesante ver si las optimizaciones del bytecode hacen alguna diferencia. – Charles

+1

A partir de junio, Facebook lanzará un compilador PHP Jit https://github.com/facebook/hiphop-php – Steven

Cuestiones relacionadas