系统极客一直在努力
专注于操作系统及软件使用教程

专访PHP之父,PHP 7性能翻倍关键大解密

专访PHP之父,PHP 7性能翻倍关键大揭露

20 岁老牌网页程序语言 PHP,最快将在 10 月底发布 PHP 7 新版,这是十年来的首次大改版,最大特色是在性能上的大突破,能比前一版PHP 5快上一倍,PHP 之父 Rasmus Lerdorf 表示,甚至能比 HHVM 虚拟机下的 PHP 程序性能更快。

HHVM 是脸书为自家网站特性而量身订制的 PHP 优化机制,不见得适用任何网站。 但 Rasmus Lerdorf 表示,新版目标之一就是要让任何网站开发者,就连使用开发框架 Drupal、开源电子商务系统 Opencart 时,都能有不输使用 HHVM 技术的效能。 在新版发表前夕,他也趁参加 PHPConf Taiwan 年会时,分享 PHP 7 性能大突破的关键。

一个 20 年来历经了多次改版和无数次优化的成熟语言,还能有效能提高一倍的突破绝非易事,Rasmus Lerdorf 坦言,不像一般新项目容易找出许多改进空间,新版 PHP 并非修改部分程序就达到如此的成果。 反而是,通过大量细节优化和性能累加后,PHP 7 才具备了不输 HHVM 的执行性能。

Rasmus Lerdorf 与 PHP 核心贡献团队花了许多心力减少程序运行时搬动的内存位数,由此加速执行的性能。 例如,PHP 中储存变量的数据架构 zval 从 24 位缩减至 16位 、Hashtable 从 72 位减少至 56 位,并检查 PHP 中的函数,思考有无任何改进性能的空间。

除了从减少内存的使用着手外,Rasmus Lerdorf 更检查 CPU 的 Cache line 的运作原理,了解程序代码如何与 CPU 互动、编译程序如何在新 CPU 架构下编译程序代码等细节,确保 PHP 7 的程序代码符合现代 CPU 的架构。 虽然每个项目的优化对性能贡献都低于 0.5%,但由于优化的项目很多,或是某项改善的功能会被应用程序反复呼叫,整体修正的综合结果就能有如此大的进展。

受HHVM刺激,决定打造兼备性能与功能的PHP

Facebook 为了优化 PHP 运作,搭配 JIT 编译而打造出虚拟机 HHVM。 而 HHVM 虽然拥有快速的执行性能,其为特定用途优化的设计,只能满足小部分的开发者。 反之,Rasmus Lerdorf 除了想提升 PHP 的性能表现外,也想要同时满足高端用户以及业余用户的需求,让 PHP 7 成为兼备性能表现及通用功能的程序语言。

然而,开发符合市场上少部分人使用的程序语言并不是难事,但是 PHP 项目瞄准许多对象,必须同时符合业余用户及专业开发者需求的原则下,开发难以面面俱到,因为总是会有部分群体的需求无法被满足,”这就像拿水管大范围的喷洒,而每个人衣服都会被水沾湿一点,但是不会有人的衣服完全湿透。”Rasmus Lerdorf 比喻。

不使用外挂框架的 PHP 的运算性能表现都很优异,但是受到外加框架的影响,原本可以在数秒内处理上千个网页要求的 PHP,性能大幅下降,变为只能处理数十个要求。 Rasmus Lerdorf 表示,在 HHVM 出现之前,相较于对 PHP 性能表现的要求,用户比较在意 PHP 能否降低网页开发的难度,而这些框架能让开发者的工作变得比较简单。 但是在 Facebook 推出 HHVM 后,引出许多重视 PHP 性能表现的用户,让Rasmus Lerdorf 意识到许多用户有性能表现的需求。 他开始思考如何将 HHVM 的 JIT 架构与 PHP 融合。

但 Rasmus Lerdorf 表示,PHP 与 HHVM 两者在架构设计上相当不同,例如,HHVM 的多线程架构并不是很稳固。 此外,HHVM 的可移植性并不佳,离可以在 Windows 平台上执行还有很大一段路,而 PHP 有很多开发者在 Windows 环境开发,而 HHVM 无法照顾到那些用户。

Rasmus Lerdorf 表示,他不能放弃 PHP 的主要架构,虽然他们曾经考虑过融合两者,但是,HHVM 在使用上有很多的限制。 虽然 HHVM对 Facebook 及许多开发者是非常好的工具,但对于 PHP 项目来说,HHVM 的使用范畴还不够宽广,只能符合F acebook 或是 Wikipedia 等特定项目的需求。

分享到:更多 ()