PHPで関数やコードの実行速度を比較してみたい!そんな時、ありませんか?

ありますよね?そんな時にコピペで使える、実行速度計測用のコードをメモしておきます。

echoとprintはどっちが速いのかとか、nullチェックはどれが一番速いのかとか、気になったことは自分で計測してみるのが一番。

目次

実行速度計測コードの全貌

まず先に全貌を載せておきます。説明はあとから。

<?php
    define('DO_COUNT', 10000);      //実行回数
    define('TEST_COUNT', 100);      //計測回数
    define('DECIMAL_DIGITS', 10);   //小数点桁数
    $all_time = 0.0;                //全体の計測時間

    for($i = 0; $i < TEST_COUNT; $i++) {

        $start = microtime(true);  //計測前の現在時刻を取得
        for($j = 0; $j < DO_COUNT; $j++) {

            /* 10000回実行する内容 */

        }
        $end = microtime(true);      //計測後の現在時刻を取得

        $test_time = $end - $start;  //10000回の実行にかかった時間
        $all_time += $test_time;     //全体の計測時間に加算
    }

    //100回計測した時の平均値を計算し、出力
    $average = number_format($all_time / TEST_COUNT, DECIMAL_DIGITS);
    echo '平均:'.$average.'秒';
?>

参考元コード:PHP速度対決!差が出る5パターン

実際に使うときは、実行回数・計測回数を好きにアレンジして、コメントを削除してお使いください。

コードの流れ

ざっくりとだけ説明しておきます。

  1. 計測対象を10000回繰り返し実行
  2. この時、10000回実行するのにかかった時間を計測しておく
  3. 上記を100回繰り返した時の平均時間を計算し、出力する

定数・変数の説明

  • DO_COUNT:1度の計測に何回実行するか。
  • TEST_COUNT:計測を何回行うか
  • DECIMAL_DIGITS:最終的に出力する平均時間の有効小数点桁数
  • $all_time:全ての計測にかかる時間
  • $test_time:1度の計測にかかった時間
  • $average:1度の計測にかかった時間の平均

計測のポイント

実行速度の計算方法はいたってシンプルです。

microtime()という関数で現在時刻(Unixスタンプ形式)をマイクロ秒まで取得できるので、計測前と計測後に現在時刻を取得しておき、「計測後の時刻 - 計測前の時刻」を計算するだけです。

「10時10分10秒」に計測を開始し、計測が終わった時刻が「10時10分15秒」だったら、計測に5秒かかりましたよ、というのをもっと細かい数値で計算しています。

- Thank you for reading. -

あなたの1クリックが励みになります\( ̄ー ̄)/

コメント

コメントする

CAPTCHA


TOPへ Top