35
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSLitmusを使ってJSのパフォーマンス測定をする

Last updated at Posted at 2012-12-05

計測しないで推測ばかりしているアホの子だったから本腰いれて JavaScript のパフォーマンス測定環境について調べた。
結論として JSLitmus を使うとかなり簡単にできる。

##使い方

  1. jslitmus.js をロードする
  2. JSLitmus.test の第二引数に測定したい関数を渡す
  3. #jslibmut_container エレメントを作る

簡単!

##例

<!DOCTYPE html>
<html>
  <head>
    <script src='jslitmus.js'></script>
    <script src='sample.js'></script>
  </head>
  <body>
    <div id='jslitmus_container'></div>
  </body>
</html>
sample.js
// グローバル変数とローカル変数に対するアクセス速度の違いを測定する

var global_var = 1;
JSLitmus.test('global', function(count) {
  while (count--) { global_var++; }
});

JSLitmus.test('local', function(count) {
  var local_var = 1;
  while (count--) { local_var++; }
});

ここで第二引数に渡された関数の実行時に count というのが渡されてそれを while (count--) { … } としているが、これは JavaScript の関数呼び出しのコストを抑えるために行う作法のようなものなので基本的にこのフォーマットに従うのがよい。

##実行してみる

先ほど作ったhtmlをブラウザで読み込む。すると以下のようになっているはず。

ここで Rub Tests ボタンを押すと何やら動き出して、しばらく経つと以下のようになる。

棒は実行できた回数を表すので長いほど速度が速い(沢山試行できた)ことを意味する。このことからグローバル変数へのアクセスよりローカル変数へのアクセスの方が(Chromeでは)4倍近く速いということが分かる。

##Tips

###自動実行する

デフォルトで Run Tests ボタンをクリックしないと計測が開始しない。これを読み込み完了と同時に実行するようにするには

window.onload = function() {
  JSLitmus.runAll();
};

とどっかに書いておけばOK.

###複数ブラウザで同時実行

参考: JSのテストファイルを複数のブラウザで開いて手軽に確認する

##おわりに

みんなでどんどん計測しよう!

35
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?