2021-11-27時点での各バージョンの安定リリース版をビルドして比較。
条件
- JIT Off
- Preload Off
- build option –enable-cliのみ
- PHP Ver. は 7.4.26, 8.0.13, 8.1.0を使用
- ベンチマークするコードはメモ化しないfibonacci
- fibonacciはn=40を求める
検証用コード
<?php
// fib.php
echo '=================='.PHP_EOL;
echo 'PHP ver. '.phpversion().PHP_EOL;
function fib($n){
if($n==0|$n==1){return 1;}
// static $memo = [];
// if(isset($memo[$n])){return $memo[$n];}
// $res = fib($n-1)+fib($n-2);
// return $memo[$n] = $res;
return fib($n-1)+fib($n-2);
}
$num = $argv[1] ?? 40;
echo 'n='.$num.PHP_EOL;
echo fib($num).PHP_EOL;
echo '=================='.PHP_EOL;
結果
$ time /usr/local/php74/bin/php fib.php ;time /usr/local/php80/bin/php fib.php ;time /usr/local/php81/bin/php fib.php
==================
PHP ver. 7.4.26
n=40
165580141
==================
real 0m8.762s
user 0m8.750s
sys 0m0.016s
==================
PHP ver. 8.0.13
n=40
165580141
==================
real 0m9.211s
user 0m9.203s
sys 0m0.016s
==================
PHP ver. 8.1.0
n=40
165580141
==================
real 0m8.696s
user 0m8.688s
sys 0m0.000s
考察
純粋な計算速度は大きな違いは少なそう。
何回か繰り返しても速度がPHP8.1>PHP7.4>PHP8.0の順だったので、もしかして実は8.0は7.4より遅かった説。
公式のアナウンスにある速度改善は巨大なWebFrameWorkに対するOPcacheの効率が変化しているように思える。
機会があれば下記追試を行いたいところ。
c.f. https://www.php.net/releases/8.1/en.php#performance_improvements