PHP7卓越性能背后的原理有哪些?
程序员文章站
2024-02-11 16:10:16
...
鸟哥在微信里放出了PHP7的下载链接:PHP: Get Download
比如Zval的变动对于缓存更加友好等等
----------------------------------20151205----------------------------------
题主我表示很困惑,问个问题怎么气氛这么古怪呢?有几个方面要说明一下:
1、鸟哥确实提前放出了下载链接,贴出来也是因为提问的时候官网没有直达,只在git有,所以方便大家下载查看。
2、我现在不是PHP程序员,只是对JIT和VM的实现比较有兴趣,专门来嘲讽PHP的各位可以换一个地方喷。
减少内存分配次数,多使用栈内存,缓存数组hash值,字符串解析成参数改为宏展开,使用大块连续内存代替小块内存等等。更细节信息请看鸟哥的PHP7分享PPT。zend引擎程序的性能提升了很多,PHP程序性能自然好了。所有的优化都是很实在的,从细节入手积少成多。
想办法去优化一个有20年历史的程序,这是一件非常有挑战性的事情,比推到重构难度更高。世界上有80%的网站用PHP,使用PHP7后这些网站程序无太大成本就能免费得到1倍性能提升。将节约多少CPU,节约多少电力,减少多少碳排放。另外PHP是开源项目,背后没有商业公司,完全由社区运作。使用PHP语言的开发者和企业从未向PHP官方付过一分钱。所以建议各位知友口下留德,无论您多么鄙视PHP,但请尊重别人为世界所做的付出。 在2015年的《PHP技术峰会》(PHPCon,上海)听鸟哥的PHP7分享,写过一篇解析文章,基本覆盖了技术分享的核心内容,有兴趣的同学可以看看。
(为了确保PHP7技术解析的点,不对其他同学产生误导,专门请鸟哥做过文章review)
PHP7革新与性能优化 php7性能优化主要是细节优化,并没有从本质上改变什么,
打个比方,swoole虽然只是个扩展,但是相当于从50分到60的提高,
php7相当于从80分到90分的提高。
php是弱类型,jit比强类型难很多。
一门语言的成功是多方面的,性能只是指标之一,简单耐操,不出乱子就是php的特色,另外纠正楼上的,php并不是完全请求释放,有部分就是常驻的,你说的分词完全可以随php启动而常驻,我们曾经就干过这事。
最后,从没有觉得php7的对手是node,python,ruby,java,
php7最大的对手是php5.先干掉php5才是他最大的难题。
see How is PHP 7 twice as fast? : PHP 世界上只有两种语言。 一种是被人骂的。 一种是无人问津的。 就这样。 性能不知道,反正看人用着真心开心,自己也看得顺眼~ 那些骂PHP的人,真心相对你们说,你们嫉妒心太强了。想想你们用的语言,哪个不是设计者搞了一堆一堆的所谓的规则和所谓的语法,让你在所谓的语言世界里跳来跳去,想想你们每天的工作内容: 是在玩电脑,还是电脑在玩你? 你们就是太见不得自己辛辛苦苦学习了一门语言,结果有一门语言可以快速学习掌握。世界在进步,接受新东西吧。不要被自己已掌握的知识框死了。 PHP7性能的确有很大的提升,但个人认为还称不上卓越二字,除非运行机制有本质的变化,否则,正如 @韩天峰 网友评论中说的那样,对解释器进行优化。PHP性能相对Java之类的半编译或C这种编译语言低,这个是PHP代码运行机制决定的。做PHP的如果连这个都不懂的话,要么不了解PHP,要么只了解PHP。但这也不能得出PHP不如Java或C这个结论,项目一般来说需要基于开放成本和运行成本来决定选择语言和架构,使用合适的工具干合适的事而已,一个语言能干什么不能干什么,性能不能一票否决。开发语言排行榜中PHP的排名已经足以证明PHP的成就了,很多做PHP的人不能正视这点,一般都是因为对PHP了解的不多或对其他语言缺乏了解导致的不自信。数据结构+算法才是程序中最重要的,PHP7的优化正是从这两方面来提升PHP性能的,而这也表明如果我们这些PHP程序员做得足够好的话,我们写出的代码,处理同样逻辑,会比那些垃圾的C或Java程序员的代码性能更高。当然也有优秀的C和Java程序员,但他们是不会来嘲笑另外一种语言的,因为他们更明白数据结构+算法=程序这个道理。
我们最近在一个项目中用Symfony,另一个项目中用Laravel,这两个都是优秀的PHP Framework,我的感受还是坚信PHP真的不是追求高运行性能的编程语言。但巧妙地利用PHP弱类型这一特性,有时比Java或C#方便多了,这两种语言的反射技术还是不如PHP反射加动态来得方便。 用了大部分脚本类语言都有的优化方案进行了优化。 不能说本身性能是卓越的,语言有适用环境,不同环境下的也没啥好比的。
作为一个简单易用,覆盖面广的语言来说,PHP7相对于之前版本的变化是卓越的,在一个开源*的社区中推进这个吃力的事情不是特别的容易。
HHVM之类的,是一个基于公司项目的产品,不会过多的考虑到外面的人是怎么用的,的确没有历史的包袱,但是也意味着要用上要做相当的改变。从某种意义上(为应用带来的额外代价)来说,用HHVM和用java没啥区别,无非是重新拿java写一遍还是用hhvm可以保留原先的php程序但是却要增加一大堆运维成本。
比如Zval的变动对于缓存更加友好等等
----------------------------------20151205----------------------------------
题主我表示很困惑,问个问题怎么气氛这么古怪呢?有几个方面要说明一下:
1、鸟哥确实提前放出了下载链接,贴出来也是因为提问的时候官网没有直达,只在git有,所以方便大家下载查看。
2、我现在不是PHP程序员,只是对JIT和VM的实现比较有兴趣,专门来嘲讽PHP的各位可以换一个地方喷。
回复内容:
PHP7在运行原理上与PHP5相比并没有变化,这与hhvm不同。主要是基于perf性能分析工具进行了常规性能优化。减少内存分配次数,多使用栈内存,缓存数组hash值,字符串解析成参数改为宏展开,使用大块连续内存代替小块内存等等。更细节信息请看鸟哥的PHP7分享PPT。zend引擎程序的性能提升了很多,PHP程序性能自然好了。所有的优化都是很实在的,从细节入手积少成多。
想办法去优化一个有20年历史的程序,这是一件非常有挑战性的事情,比推到重构难度更高。世界上有80%的网站用PHP,使用PHP7后这些网站程序无太大成本就能免费得到1倍性能提升。将节约多少CPU,节约多少电力,减少多少碳排放。另外PHP是开源项目,背后没有商业公司,完全由社区运作。使用PHP语言的开发者和企业从未向PHP官方付过一分钱。所以建议各位知友口下留德,无论您多么鄙视PHP,但请尊重别人为世界所做的付出。 在2015年的《PHP技术峰会》(PHPCon,上海)听鸟哥的PHP7分享,写过一篇解析文章,基本覆盖了技术分享的核心内容,有兴趣的同学可以看看。
(为了确保PHP7技术解析的点,不对其他同学产生误导,专门请鸟哥做过文章review)
PHP7革新与性能优化 php7性能优化主要是细节优化,并没有从本质上改变什么,
打个比方,swoole虽然只是个扩展,但是相当于从50分到60的提高,
php7相当于从80分到90分的提高。
php是弱类型,jit比强类型难很多。
一门语言的成功是多方面的,性能只是指标之一,简单耐操,不出乱子就是php的特色,另外纠正楼上的,php并不是完全请求释放,有部分就是常驻的,你说的分词完全可以随php启动而常驻,我们曾经就干过这事。
最后,从没有觉得php7的对手是node,python,ruby,java,
php7最大的对手是php5.先干掉php5才是他最大的难题。
- PHP's new hashtable implementation
- Internal value representation in PHP 7 -1
- Internal value representation in PHP 7 - 2
see How is PHP 7 twice as fast? : PHP 世界上只有两种语言。 一种是被人骂的。 一种是无人问津的。 就这样。 性能不知道,反正看人用着真心开心,自己也看得顺眼~ 那些骂PHP的人,真心相对你们说,你们嫉妒心太强了。想想你们用的语言,哪个不是设计者搞了一堆一堆的所谓的规则和所谓的语法,让你在所谓的语言世界里跳来跳去,想想你们每天的工作内容: 是在玩电脑,还是电脑在玩你? 你们就是太见不得自己辛辛苦苦学习了一门语言,结果有一门语言可以快速学习掌握。世界在进步,接受新东西吧。不要被自己已掌握的知识框死了。 PHP7性能的确有很大的提升,但个人认为还称不上卓越二字,除非运行机制有本质的变化,否则,正如 @韩天峰 网友评论中说的那样,对解释器进行优化。PHP性能相对Java之类的半编译或C这种编译语言低,这个是PHP代码运行机制决定的。做PHP的如果连这个都不懂的话,要么不了解PHP,要么只了解PHP。但这也不能得出PHP不如Java或C这个结论,项目一般来说需要基于开放成本和运行成本来决定选择语言和架构,使用合适的工具干合适的事而已,一个语言能干什么不能干什么,性能不能一票否决。开发语言排行榜中PHP的排名已经足以证明PHP的成就了,很多做PHP的人不能正视这点,一般都是因为对PHP了解的不多或对其他语言缺乏了解导致的不自信。数据结构+算法才是程序中最重要的,PHP7的优化正是从这两方面来提升PHP性能的,而这也表明如果我们这些PHP程序员做得足够好的话,我们写出的代码,处理同样逻辑,会比那些垃圾的C或Java程序员的代码性能更高。当然也有优秀的C和Java程序员,但他们是不会来嘲笑另外一种语言的,因为他们更明白数据结构+算法=程序这个道理。
我们最近在一个项目中用Symfony,另一个项目中用Laravel,这两个都是优秀的PHP Framework,我的感受还是坚信PHP真的不是追求高运行性能的编程语言。但巧妙地利用PHP弱类型这一特性,有时比Java或C#方便多了,这两种语言的反射技术还是不如PHP反射加动态来得方便。 用了大部分脚本类语言都有的优化方案进行了优化。 不能说本身性能是卓越的,语言有适用环境,不同环境下的也没啥好比的。
作为一个简单易用,覆盖面广的语言来说,PHP7相对于之前版本的变化是卓越的,在一个开源*的社区中推进这个吃力的事情不是特别的容易。
HHVM之类的,是一个基于公司项目的产品,不会过多的考虑到外面的人是怎么用的,的确没有历史的包袱,但是也意味着要用上要做相当的改变。从某种意义上(为应用带来的额外代价)来说,用HHVM和用java没啥区别,无非是重新拿java写一遍还是用hhvm可以保留原先的php程序但是却要增加一大堆运维成本。
上一篇: php如果对xml操作?解决方案