译PHP8.0 JIT介绍,及如何在PHP 8中设置JIT
PHP 8在PHP的内核中添加了JIT(即时编译)编译器,可以极大地提高性能。
纯解释程序语言没有编译步骤,可以直接在虚拟机中执行代码。实际上,包括PHP在内的大多数解释型语言都有一个轻量级的编译步骤来提高其性能。
另一方面,使用Ahead-Of-Time(AOT)编译进行编程的语言要求在运行代码之前首先对其进行编译。
即时编译是解释器和提前编译的混合模型,部分或全部代码通常在运行时进行编译,而无需开发人员手动进行编译。
PHP历史上是一种解释语言,所有代码都是由虚拟机(Zend VM)解释的。通过引入由PHP代码生成的Opcache和Opcodes,可以对此进行更改,并且可以将其缓存在内存中。PHP 7.0添加了AST(抽象语法树)的概念,该概念进一步将解析器与编译器分离。
PHP的JIT内部使用LuaJIT的DynASM,并作为Opcache的一部分实现。
深入
了解JIT有关最佳JIT配置,基准以及JIT如何工作的详细指南
Opcache可以检查使用的代码(通常称为热代码),并将它们的编译版本存储在共享的Opcache内存中。什么时候应该编译代码,什么时候应该编译代码是可配置的。
平台支持
当前在运行在x86和x64处理器指令集上的Linux和Windows系统上启用了JIT。当前不支持Apple M1和ARM CPU。
DynASM是PHP JIT中使用的编译器,它也支持ARM指令,但是尚不清楚PHP JIT是否可以在ARM处理器上运行。
如果CPU支持JIT,则JIT也可以使用AVX。2011年及以后的大多数消费者和服务器级处理器都支持AVX指令。cat /proc/cpuinfo | grep
…
如何安装与升级到 PHP 8.0 (Debian/Ubuntu)
PHP 8.0 带来了一些新功能,并在性能,语法,安全性和稳定性方面进行了改进。借助目前所有受支持的Debian和Ubuntu版本中可用的预编译软件包,可以轻松地在几乎任何类型的服务器/开发设置上安装PHP 8.0。
…目前尚无PHP 8.0的普遍可用版本。尽管PHP 8.0当前处于功能冻结状态,但有可能在2020年11月发布更稳定的版本之前进行许多更改。对于生产系统,请等待正式的稳定版本。
译PHP 8的 Attributes新特性介绍
从PHP 8开始,我们将能够使用Attributes。Attributes(在许多其他语言中也称为annotations)的目标是将元数据添加到类,方法,变量等中;以结构化的方式。
attributes的概念根本不是什么新概念,多年来,我们一直在使用docblock来模拟其行为。但是,通过添加attributes,我们现在有了该语言的一等公民来表示这种元数据,而不必手动解析docblock。
那它们长什么样呢?我们如何制作自定义attributes?有什么警告吗?这些是本文将要回答的问题。让我们深入!…
译一文详解 PHP 8 的新特性
PHP 8 将于 2020 年 11 月 26 日发布。这是一个新的主要版本,这意味着它将引入一些突破性的更改,以及许多新功能和性能改进。现在 PHP 8 在功能冻结中,这意味着不能再添加任何新功能了。
由于重大更改,您需要在代码中进行一些更改才能在 PHP 8 上运行。但是,如果您已经跟上最新版本,升级应该不会太难,因为大多数重大更改以前在 7.* 版本中已弃用。别担心,所有这些弃用都列在这篇文章中。
除了突破性变化外,PHP 8 还带来了一系列不错的新功能,如 JIT 编译器、联合类型、attributes等。
…
近期评论