Like how MySQL Optimizer will convert queries into more efficient queries as it sees fit, is there a similar optimization process going on behind the scenes with PHP? Where PHP takes your code, analyzes it and converts it to be more efficient all before executing it?
Source: Tips4all, CCNA FINAL EXAM
PHP uses a single-pass compilation process in which it converts the source code into an opcode stream (which is then executed). Because the compilation uses only a single pass and does not build an AST most optimizations commonly done by other languages would be very hard to implement. There obviously are some simple optimizations done (like interning strings and prehashing symbols), but most of the "advanced" optimizations are simply not possible.
ReplyDeleteBy the way, a very simple way to "optimize" PHP code is to cache the generated opcode stream using the APC extension, so that it isn't recreated on every page load: The compilation process is quite resource intensive and using APC can often lower your CPU usage quite a bit.
PHP itself probably does some optimizations during interpretation, though I am not aware of any significant ones.
ReplyDeleteBut since PHP is extendable, a range of so-called PHP accelerators can be found around the web. An accelerator is a PHP extension which does some form of optimization for you, typically by employing opcode caching or similar.
Distinguishing between interpretation (what the standard PHP distribution does) and compilation, several PHP compilers are available. You can pass PHP code through a PHP compiler which (rather than interpreting and executing the code on the fly) builds an optimized executable format for you.