PHP8.1, 8.0, 7.4のcliでのパフォーマンス比較

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

カテゴリー: php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です