4月 14
PHPでプログラムの処理速度を調べたりするのに、xdebugを使ったりするのもよいけど、手軽で簡単なのものに、PEARのbenchmarkというのがあります。
benchmarkそのものが入ってない場合は、
$ pear install Benchmark
でOK.(必要に応じてsudoで)
使い方はググればすぐサンプルがでるが、だいたいこんな感じ。
require_once 'Benchmark/Timer.php';
$t = new Benchmark_Timer();
$t->start ();
$t->setMarker( 't1' );
for($i=0;$i<10000;$i++){
// 処理
}
$t->setMarker('m2');
$t->stop();
$t->display ();
これを、ブラウザ上から実行すると、HTMLのtableにフォーマットされた結果が表示される。
↓こんな感じ
| time index | ex time | % | |
| Start | 1239674031.65831000 | - | 0.00% |
| m1 | 1239674031.65838100 | 0.000071 | 0.59% |
| m2 | 1239674031.67032200 | 0.011941 | 99.03% |
| Stop | 1239674031.67036800 | 0.000046 | 0.38% |
| total | - | 0.012058 | 100.00% |
で、今日のTipsとして、普通にBenchmark_Timer::display()を使うと、画面上に結果が表示されてしまうので、結果を表示せずに取得する方法。
簡単。Benchmark_Timer::getOutput()もしくは、Benchmark_Timer::getProfiling()を、displayの替わりに使えばOK。
getOutput()は、上記tableと同様のHTMLコードを取得できる。
getProfiling()は、上記tableと同様のデータを連想配列として取得できる。
↓こんな感じ
Array
(
[0] => Array
(
[name] => Start
[time] => 1239674550.91492500
[diff] => -
[total] => -
)
[1] => Array
(
[name] => m1
[time] => 1239674550.91499700
[diff] => 0.000072
[total] => 0.000072
)
[2] => Array
(
[name] => m2
[time] => 1239674550.92797600
[diff] => 0.012979
[total] => 0.013051
)
[3] => Array
(
[name] => Stop
[time] => 1239674550.92806900
[diff] => 0.000093
[total] => 0.013144
)
)
なぜかPear/Benchmarkにはドキュメントが無くて、ソースを読むしかないので、Benchmark使えなねー!と思ってる人がいるかもしれないので書いてみました。
…と思ったら、結構getOutput,getProfilingの解説してるページがあった(///
重複してるだけでなく、こちらにはそれ以上の情報が無いのが辛いが、せっかくなので公開。
Popularity: 12% [?]




