現在の位置: ホーム> 最新記事一覧> GetTimeOfDayを使用して、高精度のパフォーマンステストを実行する方法は?

GetTimeOfDayを使用して、高精度のパフォーマンステストを実行する方法は?

gitbox 2025-05-28

GetTimeOfDayとは何ですか?

getTimeOfday()は、秒単位やマイクロ秒を含む、現在の詳細を返すPHPの組み込み関数です。その返品値は、次のキーを含む配列です。

  • SEC :現在の時刻の秒数(UNIXエポックから計算)

  • USEC :現在の秒のマイクロ秒数

これらの2つの値により、高精度のパフォーマンステストに適したTime()またはMicroTime()よりも正確なタイムスタンプを取得できます。

GetTimeOfdayを使用してコード実行時間を計算する方法は?

基本的なアイデアは、コードが実行される前後の時差を記録し、実行時間を計算します。

 <?php
// 開始時間を記録します
$start = gettimeofday();

// テストするコードは次のとおりです
usleep(500000); // アナログ遅延 0.5 2番

// 終了時間を記録します
$end = gettimeofday();

// 時差を計算します,单位为2番(含微2番)
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;

echo "コード実行時間:{$duration} 2番";
?>

上記のコードで:

  • getTimeOfDay()は、連想配列を返します。

  • それぞれ秒の差とマイクロ秒の差を計算し、それを秒に変換します。

  • 最終$の期間は、コードが実行されている正確な秒数を表すフローティングポイント番号です。

パフォーマンステストのより完全な例

関数のパフォーマンスをテストしたいとします。

 <?php
function testFunction() {
    $sum = 0;
    for ($i = 0; $i < 1000000; $i++) {
        $sum += $i;
    }
    return $sum;
}

$start = gettimeofday();
$result = testFunction();
$end = gettimeofday();

$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;

echo "関数の実行結果:$result\n";
echo "実行時間:{$duration} 2番\n";
?>

この例では、 TestFunction()関数が実行され、関数のパフォーマンスを評価するために実行される時間を測定します。

GetTimeOfdayを使用することの利点

  • 高精度:マイクロ秒レベルの時間測定、 time()よりも正確です。

  • シンプルで使いやすい:返品値は配列であり、秒とマイクロ秒の情報が明確です。

  • 依存関係なし:PHPビルトイン関数、拡張機能は必要ありません。

注意すべきこと

  • GetTimeOfday()によって返される時間は、サーバーの現在の時間であり、システム時間調整の影響を受ける可能性があり、介入因子または分布の時間比較には適していません。

  • 非常に短いコードセグメントの場合、実行時間は非常に小さく、複数回実行してより安定した結果の平均値を計算することをお勧めします。