JIT时php8的重要功能之一,JIT在Opcache优化之后的基础上,再次优化,直接生成机器码。
JIT编译器集成在了Opcache插件中,仅在启动Opcache插件才有效,JIT是在原来Opcache优化的基础之上进行优化的,不是替代。目前PHP8只支持x86架构的CPU。
Opcache将 PHP 脚本编译后的字节码存储到内存中,以避免每次执行脚本时重新解析和编译,从而提高 PHP 应用程序的性能和响应速度。
Opcache开启:
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
;opcache.jit=off #注释掉此行
opcache.jit_buffer_size=100M #此处是设置开启JIT的核心
设置好后,重启apache即可。
在phpinfo的界面中Zend OPcache中如果看到JIT为”On“的状态表示开启成功。
测试一下运行速度:
$time1=time();
echo "开始时间:".$time1."<br>";
function gogogo($time1){
$r = 0;
for ($c = 0; $c < 1000000000; $c++) {
$r += $c;
}
$time2=time();
echo "结束时间:".$time2."<br>";
echo "时间差:".($time2-$time1)."<br>";
}
gogogo($time1);
我这里是PHP8.1的版本,开启JIT后运行时间为1-2秒,不开启JIT则为8-9秒,效率提升明显。