PHP8中设置开启JIT

PHP8.0.0于2020年11月26日发布了
PHP 8在PHP的内核中添加了JIT编译器,可以极大地提高性能。更强的cpu密集处理
开启PHP8.0的JIT
修改php.ini

;加载php_opcache拓展
zend_extension=php_opcache
;开启opcache,关闭则不会执行jit
opcache.enable=1
;开启cli模式opcache
opcache.enable_cli=1
;开启jit的debug
opcache.jit_debug=1
;默认是tracing,也可以function,官方最近值是1255
opcache.jit=1255
opcache.jit_buffer_size=100M

phpinfo()查看opcache拓展的配置,或者var_dump(opcache_get_status()['jit']);查看jit状态
正常状态下输出

array:7 [
  "enabled" => true
  "on" => true
  "kind" => 5
  "opt_level" => 4
  "opt_flags" => 6
  "buffer_size" => 4080
  "buffer_free" => 0
]

如果enabled和on是正确的,那就ok了!

在php8.0与php7.3分别执行下面一段代码

$time=microtime(true);
for($i=0;$i<10000000;$i++){
    $d+=$i;
}
echo $d;
echo '
'; echo microtime(true)-$time;

php8.0耗时 0.0856s
php7.3耗时2.18061s

opcache.jit配置项专门配置优化级别|JIT触发器|寄存器分配|CPU特定的优化标志
配置的顺序是:CPU特定的优化标志、寄存器分配、JIT触发器、优化级别,官方给的推荐值为1255
CPU特定的优化标志:

0 没有
1个 启用AVX指令生成

R-寄存器分配:

0 不执行寄存器分配
1个 使用本地线性扫描寄存器分配器
2 使用全局线性扫描寄存器分配器

JIT触发器:

0 JIT在第一次脚本加载时的所有功能
1个 首次执行时的JIT函数
2 在第一个请求时进行概要分析,并在第二个请求时编译热功能
3 动态分析并编译热功能
4 在文档注释中使用@jit标记编译函数
5 跟踪JIT

O-优化级别:

0 不要准时
1个 最小JIT(调用标准VM处理程序)
2 选择性VM处理程序内联
3 基于单个函数的静态类型推断的优化JIT
4 静态类型推断和调用树的优化JIT
5 基于静态类型推断和内部过程分析的优化JIT

所以1255指的是
启用AVX指令生成,使用本地线性扫描寄存器分配器,跟踪JIT,基于静态类型推断和内部过程分析的优化JIT
function 是C = 1,R = 2,T = 0,O = 5的别名。 1205
tracing 是C = 1,R = 2,T = 5,O = 4的别名。 1254

你可能感兴趣的:(PHP8中设置开启JIT)