Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 521

PHP 8.0 を使ってベンチ結果もとってみた

$
0
0

PHP 8.0 の評判が良いようなので、自分の開発環境も PHP 8.0 にバージョンアップしてみました

PHP 8.0 のインストール

具体的な手順はネットにたくさん出てるので省略

$ rpm -qa | grep php
php-pecl-msgpack-2.1.2-1.el7.remi.8.0.x86_64
php-pecl-mongodb-1.9.0-1.el7.remi.8.0.x86_64
php-pecl-memcached-3.1.5-4.el7.remi.8.0.x86_64
php-cli-8.0.3-1.el7.remi.x86_64
php-pecl-apcu-5.1.20-1.el7.remi.8.0.x86_64
php-common-8.0.3-1.el7.remi.x86_64
oniguruma5php-6.9.6-1.el7.remi.x86_64
php-mysqlnd-8.0.3-1.el7.remi.x86_64
php-mbstring-8.0.3-1.el7.remi.x86_64
php-pecl-igbinary-3.2.1-1.el7.remi.8.0.x86_64
php-sodium-8.0.3-1.el7.remi.x86_64
php-8.0.3-1.el7.remi.x86_64
php-opcache-8.0.3-1.el7.remi.x86_64
php-pdo-8.0.3-1.el7.remi.x86_64
php-process-8.0.3-1.el7.remi.x86_64

PHP 設定関連

JIT関連の設定を行った。
/etc/php.d/10-opcache.ini

opcache.enable=1
opcache.enable_cli=1
opcache.jit=on
opcache.jit_buffer_size=100M

JIT ベンチ

JIT の有無でベンチ結果
単純にループするだけのスクリプトで比較してみました。

sample.php

<?php
$start_time = microtime(true);
$count = 0;
for ($i=0; $i<1000; $i++) {
    for ($k=0; $k<1000; $k++) {
            $count += 1;
        }
} 
$end_time = microtime(true);
echo "Exec time: " . ($end_time - $start_time) * 1000 . " ms" . PHP_EOL;

opcache.jit=off 実行結果

$ time php sample.php
Exec time: 860.44096946716 ms

real    0m0.907s
user    0m0.883s
sys 0m0.022s

opcache.jit=on 実行結果

$ time php sample.php
Exec time: 291.85199737549 ms

real    0m0.336s
user    0m0.312s
sys 0m0.023

ベンチ結果考察

JITをonにするだけで3倍弱高速化してます。
JITを有効にするだけでここまで高速化するのは驚きです。

高速化は処理時間が短くなるだけでなく、CPUの使用時間も短くなってます。
timeコマンドだとphpの起動時間も入ってますが、それでもCPU使用時間が短くなることが確認出来ました。

ただしJITで高速化されるのは PHP の実行時のみ。実際のWebだとここまでの高速化はされません。

それじゃあまり意味がないようにも思えますが、高速化されることは正義ですw

特に今時のクラウドでWebサーバをオートスケールしている場合は、高速化よりも軽くなるメリットの方が大きいかも。
レスポンスタイムの改善は少なくても、Webサーバの台数が減ることはコストメリットになりますからね。


Viewing all articles
Browse latest Browse all 521

Trending Articles