Answers:
PHP被编译成字节码,然后在类似于VM的东西上进行解释。许多其他脚本语言遵循相同的通用过程,包括Perl和Ruby。它不是像BASIC这样的传统解释语言。
如果您尝试“缩小”源,则不会有效提高速度。通过使用字节码缓存(如APC),您将获得大幅度的增长。
Facebook引入了一个名为HipHop的编译器,该编译器将PHP源代码转换为C ++代码。PHP专家之一Rasmus Lerdorf在今年早些时候为Digg做了一个演讲,内容涉及HipHop带来的性能改进。简而言之,这并没有比优化代码和使用字节码缓存更快。对于大多数用户而言,HipHop显得过于矫kill过正。
Facebook最近还发布了HHVM,这是一种基于他们制作HipHop的新虚拟机。它仍然是相当新的,尚不清楚是否会为公众带来重大的绩效提升。
为了确保明确说明,请完整阅读该演示文稿。它指出了使用xdebug和xhprof等工具(也来自Facebook)进行基准测试和配置文件代码以及识别瓶颈的多种方法。
放弃将PHP精简的想法,转而使用opcode缓存(如PHP Accelerator
或)APC
。
或其他类似的东西 memcached
这不是广告,而是答案。我正在研究PHP扩展,该扩展可转换Zend操作码以在具有静态类型的VM上运行。它不会加速任意PHP代码。它确实允许您编写比常规PHP允许的运行速度更快的代码。这里的关键是静态类型。在现代CPU上,动态语言会左右左右吃掉分支预测错误的代价。实际上,PHP数组是哈希表也带来了高昂的成本:分支预测错误,缓存使用效率低下,内存预取不佳以及没有SIMD优化。对于当今的处理器而言,分支错误预测和高速缓存未命中尤其是致命弱点。我的小VM通过使用静态类型和C数组而不是哈希表来回避这些问题。结果运行的速度大约快十倍。这是使用字节码解释。该扩展可以选择通过gcc编译函数。在这种情况下,您的速度提高了2至5倍。
这是任何有兴趣的人的链接:
https://github.com/chung-leong/qb/wiki
同样,该扩展不是通用的PHP加速器。您必须编写特定于它的代码。
是的,有一个(非技术)要点。
您的托管人可以在他的服务器上监视您的代码。如果您将其缩小并丑化,则间谍很难窃取您的想法。
最小化和丑化php的原因之一可能是间谍保护。我认为uglyfing代码应该在自动部署中迈出一步。
您无需缩小PHP。为了获得更好的性能,请安装操作码缓存;但是理想的解决方案是将您的PHP升级到5.5版或更高版本,因为默认情况下,较新版本具有一个称为Zend Optimiser的操作码缓存,其性能要优于其他http://massivescale.blogspot.com/2013/06 /php-55-zend-optimiser-opcache-vs-xcache.html。