タグ

ブックマーク / torazuka.hatenablog.com (2)

  • JDKの時間計測まわりのコードを読んでみる - 虎塚

    ぐぬぬ。。。せっかくのご指名ですが。。。 JVMがOSごとにどの計時関数を呼び出すのかすら、自分はろくに知らないのです…無念だ。 でも、「ネタを振られたら全力で撃ち返せ」ってじっちゃが言ってた。 というわけで、最適化よりもずっと手前の話題、JVMの時間取得まわりのコードを眺めてみようと思います。 Systemクラスのソースコードを見ると public static native long currentTimeMillis(); と、native宣言されている。ここから先はネイティブの世界。VMの実装依存の世界でもある。 Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ そですね。では、その世界を確認してみましょう。 ゴール Javaで時間計測を行った時に各OSで最終的に呼ばれるAPIとその精度について、JDKのソースコードおよびドキュメントを元に把握する。

    JDKの時間計測まわりのコードを読んでみる - 虎塚
  • Java用爆速タイマーを作ってみる - 虎塚

    (最終更新: 2011/03/06) # 履歴は記事の末尾にあります 先日、JDKのコードを読んで、JavaのSystem.nanoTime()を実行すると、Win32APIのQueryPerformanceCounterが使用されることを確認しました。 そこで、System.nanoTime()を使うよりも速いJava用タイマーを作ってみようと思います。 合言葉は、「そんなタイマーで大丈夫か?」「一番いいのを頼む」(※ただしインテルに限る) 何を考えたか QueryPerformanceCounterは、マシン起動時からの秒数を取得します。であるならば、Javaからネイティブコードを呼び出し、インラインアセンブラに同じ処理を書いて実行することで、JDKを経由してWin32APIを叩く分のコストを削れると考えました。 さらに、手作りタイマーの良さを生かせば、次のコストを切り分けることができ

    Java用爆速タイマーを作ってみる - 虎塚
  • 1