WebDAV+Basic認証で認証されない [画像変換]sips(Mac) vs GD(PHP) ベンチマーク
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% [?]

written by ANN

add to hatena hatena.comment (7) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (1) Total: 8

Leave a Reply