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.]