PHPのバージョンごとのJITのパフォーマンス比較

dockerで各バージョンのPHPのjitを動かして比較してみた。
結論から言うとあまり差がないように見える。何か見落としがあるのかもしれないが、いったんログとして残しておく。

なお速度的にはPHP7.4が一番速い。Opcacheをoffにすると明らかに遅い。

検証に使ったコードはfibonacci数を求める次のコード

<?php

function fibo_php($i){
	if($i<0){
		return 0;
	}
	if($i==0 || $i==1){
		return $i;
	}
	return fibo_php($i-2) + fibo_php($i-1);
}
$n = $argv[1]?? 10;

$start_time = hrtime(true);
$res = fibo_php($n);
$elapsed_nano = hrtime(true) - $start_time;
$elapsed_sec = $elapsed_nano / 1000 / 1000 / 1000;
echo "n={$n}, fibonacci({$n})={$res}".PHP_EOL;
echo "elapsed time {$elapsed_sec} [sec.]".PHP_EOL;

PHP7.4

docker run --rm -it  -v /path/to/source:/mysource  php:7.4.30-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
+ strip --strip-all modules/opcache.so
+ php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.2267407 [sec.]
docker run --rm -it  -v /path/to/source:/mysource  php:7.4.30-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
+ strip --strip-all modules/opcache.so
+ php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.3659223 [sec.]

PHP8.0.20

docker run --rm -it  -v /path/to/source:/mysource  php:8.0.20-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ strip --strip-all modules/opcache.so
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.4793895 [sec.]
docker run --rm -it  -v /path/to/source:/mysource  php:8.0.20-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ strip --strip-all modules/opcache.so
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.4331118 [sec.]

PHP8.1.17

docker run --rm -it  -v /path/to/source:/mysource  php:8.1.7-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ strip --strip-all modules/opcache.so
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ php -d opcache.enable_cli=on -d opcache.jit=off /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.4398298 [sec.]
PS D:\proj\php\jit> docker run --rm -it  -v /path/to/source:/mysource  php:8.1.7-cli bash -cx "docker-php-ext-install opcache >/dev/null && php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40"
+ docker-php-ext-install opcache
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ strip --strip-all modules/opcache.so
make: Circular jit/zend_jit.lo <- jit/zend_jit.lo dependency dropped.
+ php -d opcache.enable_cli=on -d opcache.jit=on /mysource/fibonacci_cli.php 40
n=40, fibonacci(40)=102334155
elapsed time 7.4708192 [sec.]
カテゴリー: php

コメントを残す

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