先ほど説明したように、 このクラスは単にコードの特定の部分の実行所要時間を記録するだけのクラスです。 automatic モードの場合は、 このクラスのインスタンスを作成したところ以降の処理の所要時間を記録します。 manual モードの場合は、このクラスの start() メソッドと stop() メソッドをコールした間のコードの実行所要時間を記録します。
さらに、計測するコード片の中に マーカー を指定することもできます。マーカーを定義した場所で、 時間の情報が記録されます。
このような説明よりも、実際に例を見ていただいたほうがわかりやすいでしょう。
自動モードでの Benchmark_Timer の動作
<?php
require_once "Benchmark/Timer.php";
$timer = new Benchmark_Timer(TRUE);
// 自動モードに設定したので、ここから計測を開始します
$j = array();
for ($i = 0; $i < 100; $i++) {
$j[] = $i;
if ($i == 49)
$timer->setMarker('Midway');
}
// ここでタイマーが終了し、自動的に結果を表示します
?>
上の例を PHP CLI SAPI で実行すると、次のように結果を出力します。 Apache SAPI で実行した場合は、同じ結果を HTML 形式で出力します。
Benchmark_Timer の実行結果
---------------------------------------------------- marker time index ex time perct ---------------------------------------------------- Start 1182558324.48638900 - 0.00% ---------------------------------------------------- Midway 1182558324.48655800 0.000169 62.13% ---------------------------------------------------- Stop 1182558324.48666100 0.000103 37.87% ---------------------------------------------------- total - 0.000272 100.00% ----------------------------------------------------
しかし、普通は結果を単に表示するだけでなくそれ以外の作業もしたくなるでしょう。 タイマーを手動モードで実行した場合は、 getProfiling() メソッドで結果を連想配列として取得できるようになります。 この情報を (上の結果のように) 表示したい場合は display() メソッドを使用します。 Benchmark_Timer が実装しているその他のメソッドについては、API ドキュメントを参照ください。