July 4, 2012
このエントリーをはてなブックマークに追加

JavaScript上でナノ秒を計測する

JavaScript上でナノ秒(nanoseconds)を計測する方法のメモ。

JavaScriptのパフォーマンスを測りたいときなど、普通はDateオブジェクトを使います。

現在時刻のミリ秒は、

var now = new Date();
console.log(now.getTime());

とすれば出力できます。

しかし、これで得られる値はミリ秒(milliseconds)です。

JavaScript単体では、もっと細かい値(マイクロ秒やナノ秒)を計測できないですが、Java appletを併用すればナノ秒を得ることができます。

次のような簡単なJavaのコードを書いてコンパイルし、Nano.jarとまとめておきます。

public class Nano extends java.applet.Applet {
    public long nanoTime() {
        return System.nanoTime();
    }
}

そして、使いたいページのHTMLファイルに、

...
<applet code="Nano" archive="Nano.jar" name="nano" mayscript="true"></applet>;
...

のように貼り付けます。

JavaScriptからJava appletを呼び出すのにname属性を指定しておく必要があります。

後は、JavaScript上でNano.nanoTime()という関数を呼び出せばナノ秒を取得できます。

var now = document.nano.nanoTime();
console.log(now);

これでおーけー。

なお、GitHubにサンプルが置いてあります。

https://github.com/totakke/js-nanosec-sample

Tags: JavaScript Java