Rewish

PHPで処理の実行速度を比較する簡単な方法

関数Aと関数Bの比較を行いたい場合や、書き方の違いなどでの処理速度比較を行う簡単な方法をご紹介します。

きっちりベンチマークを計りたい場合は、PEAR::Benchmark(PEAR::Manual::ベンチマーク処理)を使用する事をオススメします。

PHP5の場合

<?php
// 開始時間
$startTime = microtime(true);

// 10万回ループ
for ($i = 0; $i < 100000; $i++) {
	// 処理
}

// 終了時間
$endTime = microtime(true);

// 終了時間 - 開始時間 = 処理に掛かった時間
echo $endTime - $startTime . '秒';

PHP4の場合

<?php
// PHP5の動作を模擬する簡単な関数
function microtime_float() {
  list($usec, $sec) = explode(' ', microtime());
  return ((float)$usec + (float)$sec);
}

// 開始時間
$startTime = microtime_float();

// 10万回ループ
for ($i = 0; $i < 100000; $i++) {
  // 処理
}

// 終了時間
$endTime = microtime_float();

// 終了時間 - 開始時間 = 処理に掛かった時間
echo $endTime - $startTime . '秒';

説明及び補足

microtime関数を使って現在のUNIXタイムスタンプをマイクロ秒単位で取得し、開始・終了それぞれを変数に代入、処理が終ったら終了時間から開始時間を引いて処理に掛かった時間(速度)を出力。

PHP4の場合は$get_as_floatが使用出来ないため、PHP5を模擬する簡単な関数を書いて対応。

まとめ

  • microtime関数で開始と終了の時間を求める
  • ループなどで処理を複数回実行する
  • 終了時間 - 開始時間 = 処理に掛かった時間
  • 詳細なベンチマークを計りたい場合はPEAR