タグ

2011年3月5日のブックマーク (4件)

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

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

    Java用爆速タイマーを作ってみる - 虎塚
    torazuka
    torazuka 2011/03/05
    JNIコストを再計測しました。繰返し実行回数に依存するJIT最適化を考慮してみた(つもり)/ id:sh2 さん、ご指摘ありがとうございます。
  • Real differences between "java -server" and "java -client"?

  • http://nukoup.nukos.net/sam.php

    torazuka
    torazuka 2011/03/05
  • データ型のアラインメントとは何か,なぜ必要なのか?

    以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい