IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

ベンチマークツール公開

最近

またしても、JavaScriptベンチマークを取らなければならない仕事が来たので、
ツールをキレイにしました。
それを公開します。(ダウンロードは一番下にあります。)

使い方

script タグで benchmark.js を読み込んで、以下のように連想配列の関数群を渡すだけです。

benchmark({
    'ほげほげの計測': function() {
        ......
    },
    'ふがふがの処理の計測': function() {
        ......
    }
});

結果は以下のように表示されます。

*** ほげほげの計測 ***
result : 0.0011[ms]

*** ふがふがの処理の計測 ***
result : 0.111[ms]

表示された秒数は

関数の中身を一回だけ実行する時間です。
関数呼び出しのコストは差し引かれています。

また、FireBug を使っている場合は

benchmark.at('firebug')({
        ......
});

とすることで、ログを FireBug のコンソールに表示できます。

注意点(これを守らないと正確なベンチマークを取れません)

1. 計測は、グローバル領域で行ってください。

関数定義箇所のスコープによって、関数の重さが変わるため。
ダメな例

function() {
    benchmark({
        ...
    });
}
2. 軽すぎる関数を入れて計測しても、正確な値は出ません

誤差によって、マイナスの値が計測される可能性もあります。

benchmark({
    '悪い例': function() {
        i++;
    },
    '良い例': function() {
        i++;i++;i++;i++;i++;......(10000回くらい書く)
    }
});

ちなみに

グローバルは benchmark という関数しか汚染していません。
他のライブラリといっしょに使っても大丈夫です。

デモ:Prototype.js の $ の速度を計測

http://sample.ecmascript.jp/benchmark.html