关键要点
本文由 NewRelic 赞助。感谢您支持使 SitePoint 成为可能的赞助商! 文章的先前版本错误地将 PHPNG 描述为 JIT 编译器。情况并非如此,必要的修改已完成。请参阅文章底部了解更多信息。
旧世界中的混乱!几年前,首先是 HipHop,没有人关注。然后突然,HHVM 出现了,引入了 Hack,一切都乱套了——Facebook 创建了一个新的 PHP 并破坏/修复了一切(取决于你问谁)。此外,Zephir 出现并威胁要对所有 PHP 代码进行 C 级编译,并完全支持当前的 PHP 扩展(虽然 Zephir 不打算取代 C 或 PHP,但它确实允许你编写类似 PHP 的代码并将其编译为 C,这使你可以轻松地将所有 PHP 应用程序重写为可以进行封闭源代码编译以提高速度和安全性的格式)。对于替代 PHP 运行时来说,这是蘑菇生长的时刻,HippyVM 也出现了。
在这一系列变化中,又出现了一个新的声音:PHPNG。
正如 Manuel Lemos 介绍的那样,PHPNG 是 PHP 的一个新分支,将在 PHP 的一个尚未确定的未来版本中出现。
这个名字有点俗气(NG = 新一代),而且表达笨拙的 PHP 版本是核心团队大幅优化 PHP 并允许将来使用 JIT 编译器进一步提升性能的尝试。PHPNG 本身并非 JIT 编译器,而是一个升级,为日后构建优秀的 JIT 编译器奠定基础。PHPNG 分支本身不包含任何 JIT 功能。
PHPNG 由 Dmitry Stogov 在一个内部新闻组主题中提出。Dmitry 负责 Zend 的性能和优化,主要处理 Zend 引擎。NG 升级专注于重写 Zend 引擎的核心部分,以实现对 PHP 数据类型的更好内存分配。
摘自 Reddit:
NG 的存在是因为 Zend 在引入 JIT 时进行的实验在现实世界中失败了,原因在于引擎当前的设计方式,主要是因为我们一直都在分配所有内容。NG 补丁改变了规范,因此我们不再默认分配 zvals,这提高了性能并允许更简洁的 API。
与任何“改进 PHP”的尝试一样,这次尝试也有其优缺点。
更快的执行意味着更快的资源分配,意味着更快的请求处理,意味着更大的请求吞吐量。初步结果令人鼓舞(1,2)。
性能仍需要与其他替代方案进行基准测试,但 10-30% 的提升不容小觑。
由于此升级是在官方 Zend 引擎上进行的,而不是替代运行时,因此它几乎保证了与当前扩展的兼容性。人们犹豫是否迁移到 HHVM 的最大原因之一是他们习惯使用的基本扩展不可用(在我的例子中是 Phalcon)。就我个人而言,一个支持 Phalcon 的更快的 PHP 引擎会让我对 Hack 当今提供的升级不太关心。
所以它保证了扩展兼容性……等等。是吗?哦,不。
好得令人难以置信。
并非所有扩展都受支持,一些测试失败了,我们还有更多改进的想法。
公平地说,NG 还很年轻。比我们在 PHP 世界中处理过的任何东西都要年轻得多,而且更像是一个重大的更新——因此,一些兼容性问题是不可避免的。但我同意 Manuel 的说法,当升级时间到来时,这可能是大多数共享主机提供商的痛点。
尽管我相当反对共享主机提供商,但我完全理解这可能带来的问题。当我们试图让提供商“使用 PHP5”时,以及最近一次他们需要使用更新版本的 PHP 时,我们都遇到了类似的混乱,因此让他们进行可能引入 BC 中断的重大转变将是一项艰巨的任务。
这种对变化的恐惧将巩固旧版 PHP 的使用,反过来又会滋生更多在过时代码上工作的极其不合格的 PHP 开发人员,完全忽略最佳实践和漏洞。简而言之,我们将重演历史。这听起来可能像是世界末日,正如一些人指出的那样,但我每天都深入参与 PHP 的所有领域,并通过一个完整的收件箱接触到最低质量的领域,我看到了我们现在所处的位置以及我们将去向何处。然而,并非一切都是黑暗的——Heroku 和 DigitalOcean 等解决方案将使人们能够以低于(或等于)共享主机提供商的价格运行最新和自定义版本的 PHP。
我最真诚的希望是核心团队能够将新的 Zend 引擎完善到足以保持与所有扩展向后兼容的程度,但会向所有未能遵守 NG 规范和最佳实践的扩展开发人员发出编译警告。
核心开发团队因适应变化缓慢而臭名昭著。其他语言中存在多年的现代功能在过去被否决了,直到几年后才被实施。
这是否是由于核心开发团队缺乏远见,就像 Anthony 和 Phil 的帖子所说的那样,或者是因为它规模太小且资金不足而无法快速进行任何重大更改,这无关紧要——内部缓慢意味着我们可能永远无法在公开场合看到 NG 并摆脱“alpha”状态,就像神秘的 PHP6 的情况一样。
这让我们想到了最后一点。
由于在 PHP 核心开发团队中经常看到的固有缓慢性,到 NG 实施时(如果真的实施的话),它将只提供性能升级。到那时,Hack 和 HHVM(远远超过标准 PHP)将提供如此多的附加功能,比赛将被操纵,PHP 将毫无胜算。
Hack 和 Zephir 中今天可用的类型提示将在这些实现中扎根。多线程、编译、独立 Web 服务器——所有这些功能今天都在替代解决方案中可用,而且它们几乎都已准备好投入生产。虽然核心开发团队正在研究其中的一些功能,而且 PHP 可能在 HHVM 之前就拥有 IIS 支持(这显然对某些人来说很重要),但我个人仍然认为这对于 PHP 官方方面来说还不够迅速的进展。
即使核心团队确实决定对存在问题和需求的所有这些特殊功能投“赞成票”,他们也需要花费太长时间来实现——而且他们默认会落后,除非引入范式转变并改变他们的整个工作方式。将源代码移至 GitHub 是一个好举动,但它只是触及了表面。
也就是说,Rasmus 本人据说认为 HHVM 在几年内成为 PHP 的核心引擎并非科幻场景。
撇开 Facebook 相关的所有权(这本身就带有许多负面含义),HHVM 通过展示如何进行此类升级来推动开发人员朝着正确的方向前进。这推动了创新,并迫使那些长期以来一直安于自己宝座的人站起来,伸展双腿,看看他们是否还能奔跑。Facebook 的积极进取迫使 PHP 世界重新审视并思考正在发生的事情,很快它就流行起来。
竞争是令人敬畏的。无论这将我们带到哪里,我都对此感到乐观。
在与 Phil Sturgeon 进行电子邮件交流之后,并在阅读官方声明之后,我已经编辑了上述文本的部分内容。简而言之,我将 PHPNG 分类为 JIT,而它显然不是,而只是一个性能升级,这将允许核心团队稍后开发一个合适的 JIT 编译器。
PHP 和 Zephir 都是用于 Web 开发的脚本语言。PHP 是一种广泛使用的开源语言,而 Zephir 是一种高级语言,允许开发人员为 PHP 编写扩展。Zephir 提供静态类型语法,这有助于防止 PHP 中可能发生的错误。但是,PHP 拥有更大的社区和更多可用的资源,这对开发人员来说可能是有益的。
HHVM(HipHop 虚拟机)和 PHPNG(PHP 新一代)都是执行 PHP 代码的引擎。HHVM 由 Facebook 开发,并使用即时 (JIT) 编译方法来实现卓越的性能。另一方面,PHPNG 是 PHP 的一个内部项目,旨在提高 PHP 应用程序的性能。它通过更改 PHP 内部表示值和对象的方式来实现这一点,从而导致显着的内存使用改进。
根据最近的更新,Zephir 不再积极维护。这意味着虽然该语言仍然可用,但它可能不会接收任何可能出现的潜在问题的更新或修复。
Zephir 为开发人员提供了许多优势。它提供静态类型语法,这有助于防止错误。它还允许开发人员为 PHP 编写扩展,从而提供一种提高 PHP 应用程序性能的方法。
创建 Zephir 的目的是提供一种高级语言,允许开发人员为 PHP 编写扩展。目标是通过允许开发人员使用更容易优化和管理的语言编写关键代码部分来提高 PHP 应用程序的性能。
PHPNG 通过更改 PHP 内部表示值和对象的方式来提高 PHP 应用程序的性能。这导致显着的内存使用改进,并可能导致 PHP 应用程序的执行时间更快。
尽管出现了 HHVM 和 Zephir,PHP 仍然是广泛使用的 Web 开发语言。虽然 HHVM 和 Zephir 提供了性能改进,但 PHP 拥有庞大的社区和丰富的可用资源。PHP 的未来看起来很有希望,并且正在不断努力改进其性能和功能。
是的,Zephir 的主要优势之一是它允许开发人员为 PHP 编写扩展。这可能是提高 PHP 应用程序性能的一种方法。
脚本语言是一种编程语言,用于自动化本来需要由人工操作员一步一步执行的任务。另一方面,高级语言是一种编程语言,它与计算机的细节具有很强的抽象性,使其更易于阅读和编写。
HHVM 的即时 (JIT) 编译方法通过在执行之前将字节码编译为机器码来提高性能。这允许进行优化,可以显着提高 PHP 应用程序的执行速度。
以上是PHP与PHPNG战斗HHVM和Zephir的详细内容。更多信息请关注PHP中文网其他相关文章!