PHP NG (你要愿意的话叫 PHP 5.7 也行)目前还在 alpha 开发阶段,但已经显示出惊人的性能提升。关键是仍保持对 PHP 5.6 的兼容性。
Dmitry Stogov 在今年1月中旬的 首次发布 以及5月初的 里程碑更新 后对 PHP 速度的提升有着越来越多的思路(特别贡献者来自 Xinchen Hui @雪候鸟 , Nikita Popov 等).
到了7月中旬这些努力终于有了结果,测试表明开发中的版本性能对比 PHP 5.6 有着近乎 1 倍的提升。测试是在渲染 WordPress 3.6 前端页面上进行的。
同样的页面,PHP 5.6 渲染 1000 次耗时 26.756 秒,而 PHP NG 耗时 14.810 秒。这还没结束,你可以通过 http://wiki.php.net/phpng 了解更多目标和备注。
此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码。PHP 5.6 执行 100 次渲染需要 9,413,106,833 个 CPU 指令,而 PHP NG 只需 3,627,440,773 指令。
因为多数扩展都可支持 PHP NG,因此你可以轻松的构建自己的环境进行测试。因为有大量的计划,因此 PHP NG 今年无望发布稳定版本,希望 2015 年能有稳定的 Beta 甚至是 RC 版本发布。
引用来自“南湖船老大”的评论
这个提升1倍只能说明 WordPress 本身的代码有点烂吧引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“Body”的评论
php是最好的语音,没有之一!引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“吴家杰”的评论
写得很烂的java真心不多。引用来自“cgf986916”的评论
还是希望php越做越好,适当的把编译加入,多线程等;引用来自“eechen”的评论
作为快速开发的务实的Web脚本,PHP不会做成那种编译型的语言,这也违背PHP的设计初衷,脚本特性也正是PHP的最终定位和优势。PHP开发组通过开发Opcache和优化代码的CPU指令在保持PHP脚本特性的同时进一步提升PHP的性能,以后可能还会基于GNU LibJIT加入即时编译机制。PHP在线程安全模式下可以通过pthreads这个扩展支持多线程编程:
http://php.net/manual/zh/book.pthreads.php
引用来自“cgf986916”的评论
op还是很棒的,公司论坛服务器开启这个,访问性能提升很大;多线程最好集成下,扩展不是每个服务器都能搞得;引用来自“eechen”的评论
ZendOpcache也没有集成到核心,你不也用上了吗?你要用Pthreads扩展,同理自己加进去不就好了,只是要先确定自己的PHP版本是线程安全就好了.
引用来自“北京最牛逼交警”的评论
我记得op已经集成了吧,好像是5.5吧,比较久没关注php了 : )引用来自“极品渣子”的评论
自从ASP熄火后,PHP一直是孤独的。等你的应用规模达到Facebook的时候再说非得上HHVM吧.
HHVM要用PHP的PECL扩展,只能自己一个个去移植,hacklang和HHVM基本上也只能服务于Facebook自身.说hacklang和HHVM会分裂PHP社区,真是天方夜谭,先不说PECL扩展,先让hacklang和HHVM支持在说吧.
把PHP的opcode比作假腿,那Java的bytecode就是真腿啰,笑话,你把C/C++生成的机器码放在什么位置,你为什么不要VM比作轮椅呢?
不谈5.7,也不谈Opcache,从开发到部署,PHP给人感觉轻巧快速是不可否认的,这就是我所说的"快感",如果你非要拿Java和PHP做计算密集型的性能对比,然后得出结论Java比PHP快很多倍,方向本来就错了,结论自然也没什么意义,因为PHP在Web上主要就是操作串,操作数据库,而不是用来作密集型计算,而一旦涉及数据库,性能瓶颈首先也不会出线在编程语言层面上.
引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“0x0bject”的评论
@Gavin-Top 快来膜拜~引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“吴家杰”的评论
写得很烂的java真心不多。引用来自“螳螂哥哥”的评论
那是因为好代码和差代码在java里看上去区别没在php里那么大引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“雪候鸟”的评论
哈哈哈, 这个作者也是个糊涂蛋, 什么叫做"此次性能提升的秘诀在于将近 60% 的 CPU 指令被替换成更高效的代码".... 优化的最最最核心的就是降低指令数.....(比如采用更好的内存结构, 减少内存分配循环)等.. 当然, 还有很多细节细节细节的优化, 想知道是啥? 8月来听我演讲吧...引用来自“狂奔的蜗牛.”的评论
一倍不就是没有变化麽。。。。引用来自“eechen”的评论
PHP不需要编译,生产环境中还可以开启ZendOpcache(现在由鸟哥维护)提升代码性能,内存占用也非常少,PHP很轻巧,用起来也感觉得到的快,这种感觉很重要,而运行在VM上的伪编译的Java是没有这种快感的。等LibJIT发展成熟了,PHP估计还会加入即时编译支持:
http://www.gnu.org/software/libjit/
引用来自“Gavin-Top”的评论
顶一个,这些php黑看来没体会到O+的快感引用来自“Tuesday”的评论
O+没M+好.我说的是mysqlcache,
引用来自“BaiYang”的评论
巨大的性能提升事实上从侧面反应了PHP引擎之前一直很低效……引用来自“eechen”的评论
低效?那等你写出这样一篇高质量的文章指出问题再说也不迟,你主观臆测的成分太多了:http://wuduoyi.com/note/hhvm/
引用来自“Pader”的评论
说实话,PHP 一直在用的 Zend 引擎确实不怎么样,所以说还是有很大的优化空间的。“首先简单提一下 Zend 是如何执行的,Zend 的 interpreter(也叫解释器)在读到 opcode 后,会根据不同的 opcode 调用不同函数(其实有些是 switch,不过为了描述方便我简化了),然后在这个函数中执行各种语言相关的操作(感兴趣的话可看看深入理解 PHP 内核这本书),所以 Zend 中并没有什么复杂封装和间接调用,作为一个解释器来说已经做得很好了。”
“因为有了 Interpreter,HHVM 在对于 PHP 语法的支持上比 HPHPc 有明显改进,理论上做到完全兼容官方 PHP,但仅这么做在性能并不会比 Zend 好多少,由于无法确定变量类型,所以需要加上类似上面的条件判断语句,但这样的代码不利于现代 CPU 的执行优化,另一个问题是数据都是 boxed 的,每次读取都需要通过类似 m_data.num 和 m_data.dbl 的方法来间接获取。对于这样的问题,就得靠 JIT 来优化了。”
一个脚本语言需要应用JIT才能进一步优化,说明这个语言在脚本层面已经优化得足够好了。
引用来自“cgf986916”的评论
还是希望php越做越好,适当的把编译加入,多线程等;引用来自“eechen”的评论
作为快速开发的务实的Web脚本,PHP不会做成那种编译型的语言,这也违背PHP的设计初衷,脚本特性也正是PHP的最终定位和优势。PHP开发组通过开发Opcache和优化代码的CPU指令在保持PHP脚本特性的同时进一步提升PHP的性能,以后可能还会基于GNU LibJIT加入即时编译机制。PHP在线程安全模式下可以通过pthreads这个扩展支持多线程编程:
http://php.net/manual/zh/book.pthreads.php
引用来自“cgf986916”的评论
op还是很棒的,公司论坛服务器开启这个,访问性能提升很大;多线程最好集成下,扩展不是每个服务器都能搞得;引用来自“eechen”的评论
ZendOpcache也没有集成到核心,你不也用上了吗?你要用Pthreads扩展,同理自己加进去不就好了,只是要先确定自己的PHP版本是线程安全就好了.
引用来自“北京最牛逼的交警”的评论
我记得op已经集成了吧,好像是5.5吧,比较久没关注php了 : )引用来自“eechen”的评论
PHP不需要编译,生产环境中还可以开启ZendOpcache(现在由鸟哥维护)提升代码性能,内存占用也非常少,PHP很轻巧,用起来也感觉得到的快,这种感觉很重要,而运行在VM上的伪编译的Java是没有这种快感的。等LibJIT发展成熟了,PHP估计还会加入即时编译支持:
http://www.gnu.org/software/libjit/
引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“Gavin-Top”的评论
等你用了O+就不会这么说了,性能提升很明显引用来自“0x0bject”的评论
O+是?引用来自“BaiYang”的评论
巨大的性能提升事实上从侧面反应了PHP引擎之前一直很低效……引用来自“eechen”的评论
低效?那等你写出这样一篇高质量的文章指出问题再说也不迟,你主观臆测的成分太多了:http://wuduoyi.com/note/hhvm/
引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“Gavin-Top”的评论
等你用了O+就不会这么说了,性能提升很明显引用来自“BaiYang”的评论
巨大的性能提升事实上从侧面反应了PHP引擎之前一直很低效……http://wuduoyi.com/note/hhvm/
引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“synya”的评论
那写的很好的java该去跟谁比?引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“吴家杰”的评论
写得很烂的java真心不多。引用来自“螳螂哥哥”的评论
那是因为好代码和差代码在java里看上去区别没在php里那么大引用来自“cgf986916”的评论
还是希望php越做越好,适当的把编译加入,多线程等;引用来自“eechen”的评论
作为快速开发的务实的Web脚本,PHP不会做成那种编译型的语言,这也违背PHP的设计初衷,脚本特性也正是PHP的最终定位和优势。PHP开发组通过开发Opcache和优化代码的CPU指令在保持PHP脚本特性的同时进一步提升PHP的性能,以后可能还会基于GNU LibJIT加入即时编译机制。PHP在线程安全模式下可以通过pthreads这个扩展支持多线程编程:
http://php.net/manual/zh/book.pthreads.php
引用来自“cgf986916”的评论
op还是很棒的,公司论坛服务器开启这个,访问性能提升很大;多线程最好集成下,扩展不是每个服务器都能搞得;引用来自“eechen”的评论
ZendOpcache也没有集成到核心,你不也用上了吗?你要用Pthreads扩展,同理自己加进去不就好了,只是要先确定自己的PHP版本是线程安全就好了.
引用来自“cgf986916”的评论
我记得op已经集成了吧,好像是5.5吧,比较久没关注php了 : )pecl install pthreads
其他的xdebug,redis支持,memcached支持同理,还包括opcahe.
引用来自“cgf986916”的评论
还是希望php越做越好,适当的把编译加入,多线程等;引用来自“eechen”的评论
作为快速开发的务实的Web脚本,PHP不会做成那种编译型的语言,这也违背PHP的设计初衷,脚本特性也正是PHP的最终定位和优势。PHP开发组通过开发Opcache和优化代码的CPU指令在保持PHP脚本特性的同时进一步提升PHP的性能,以后可能还会基于GNU LibJIT加入即时编译机制。PHP在线程安全模式下可以通过pthreads这个扩展支持多线程编程:
http://php.net/manual/zh/book.pthreads.php
引用来自“cgf986916”的评论
op还是很棒的,公司论坛服务器开启这个,访问性能提升很大;多线程最好集成下,扩展不是每个服务器都能搞得;你要用Pthreads扩展,同理自己加进去不就好了,只是要先确定自己的PHP版本是线程安全就好了.
引用来自“cgf986916”的评论
还是希望php越做越好,适当的把编译加入,多线程等;PHP在线程安全模式下可以通过pthreads这个扩展支持多线程编程:
http://php.net/manual/zh/book.pthreads.php
等LibJIT发展成熟了,PHP估计还会加入即时编译支持:
http://www.gnu.org/software/libjit/
引用来自“南湖船老大”的评论
这个提升1倍只能说明 WordPress 本身的代码有点烂吧引用来自“chenwenli”的评论
哈哈,烂代码能提高这么多,稍微优化点的话提升的不止1倍吧。。引用来自“南湖船老大”的评论
这个提升1倍只能说明 WordPress 本身的代码有点烂吧引用来自“SimonYe”的评论
PHP 需要VM,划时代的VM引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“吴家杰”的评论
写得很烂的java真心不多。引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“吴家杰”的评论
写得很烂的java真心不多。引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“狂奔的蜗牛.”的评论
一倍不就是没有变化麽。。。。引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“zhaojinhai”的评论
这样比较你觉得有意思语言只是工具。如果新版php 代码做到如此高效指令,而且使用缓存技术的话,说不定java还真比不上。。。
我不是java黑,我也用java.
引用来自“xdev”的评论
php终于有大动作,不容易,速度优化方面是不是可以像javascript V8引擎一样引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“ZeroOne”的评论
写的很烂的java还真比不上写得很好的php...引用来自“这个世界不真实”的评论
= - =等什么时候php的速度超过java 了 就把php 当第一语言引用来自“会飞的螃蟹”的评论
php 稳定发展的大局要毁,以后各大分支版本 大行其道,这样php是要走向更加兴盛还是走向灭亡?