タグ

パフォーマンスとjavaに関するNagiseのブックマーク (12)

  • JMH - Javaでのベンチマークを試してみる - 覚えたら書く

    OpenJDK のサイトで公開されているマイクロベンチマーク用のライブラリ。Java Microbenchmark Harness の略。 JMHの存在理由 Javaでパフォーマンス測定(ベンチマーク取得)するのは以下のような理由により簡単ではありません 計測用のコードを書くのが実は難しい 計測用のコードの書き方がまずいと、コンパイラにより最適化で処理部分を削ってしまう場合がある ウォームアップが必要 JITコンパイラによってコンパイルされているかどうかで測定結果が大きく異なる こういう問題を解消して計測してくれるのがJMHです。(OpenJDKで公開されているので、Java公式ツールといってよいでしょう) 使い方(概要) JMHを使った計測の流れは大まかに以下の通りです(Mavenを用いてIDE上で実行する例です) JMHでの計測用のMavenプロジェクトを作成する ↓ 計測したい処理を

    JMH - Javaでのベンチマークを試してみる - 覚えたら書く
  • 動的配列について – JavaのLinkedListとArrayListを分析・比較する | POSTD

    私はSkienaの『Algorithm Design Manual』 (訳注:『アルゴリズム設計マニュアル』 上巻 ・ 下巻 ) を読んでいました。ところでこのは素晴らしいで、連結リストと配列についてこんな比較をしていました(chapter 3.1.3)。 連結リストが静的配列に勝る相対的な長所には以下のものがあります。: • メモリが当にいっぱいにならない限り、連結構造にオーバーフローが生じない。 • 連続的な(配列)リストに比べて、挿入と削除が単純である。 • 大きなレコードを扱う場合、要素自体を動かすよりもポインタを動かすほうが容易かつ高速である。 一方で、配列の相対的な長所には以下のものがあります。 • 連結構造には、ポインタのフィールドを格納するための余計な領域が必要となる。 • 連結リストでは、要素に対する効率的なランダムアクセスができない。 • 配列は、ランダムなポイン

    動的配列について – JavaのLinkedListとArrayListを分析・比較する | POSTD
  • Javaのマイクロベンチマークツール「JMH」 - Taste of Tech Topics

    ブログの読者の皆様方におかれましては、JavaのArrayListとLinkedListの 実装の違いにより性能に差があることは、当然のように熟知のことと存じあげます。 しかし! 実際にいかほどの差があるのか、それを数値で説明できるという方はどれほどいらっしゃるでしょうか。 いきなり丁寧語の煽りでスタートしました @cero_t です。 そう、今日のテーマはマイクロベンチマークです。 たとえば、 文字列を + で結合すると遅い。 ArrayListの初期化時にはサイズを指定したほうが良い。 ArrayListはループ処理が得意、LinkedListは途中の追加が得意。 など、よくあるパフォーマンスのプラクティスについては既に知っているという方も多いと思うのですが 実際に何倍ぐらいの差なのか(どれぐらいのオーダーの差なのか)を数値で話すことができるという方は、 あまり多くないように思います

    Javaのマイクロベンチマークツール「JMH」 - Taste of Tech Topics
  • JDKの時間計測まわりのコードを読んでみる - 虎塚

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

    JDKの時間計測まわりのコードを読んでみる - 虎塚
    Nagise
    Nagise 2011/02/28
    素晴らしいまとめ。OSよりのところは詳しくないので非常に参考になります!
  • HotSpot JVMの最適化オプションについて調べる - terazzoの日記

    Javaの最適化の議論で「インライン展開」「エスケープアナリシス」などの用語が出てきていて、気になって調べたところ、java実行時のオプションで最適化の方法を指定したり実行過程を表示したり出来るらしい。 主なオプションについて Java HotSpot VM Optionsにパフォーマンスに影響しそうなHotSpot VMのオプションが説明されている。 例: オプション 効果 -XX:+PrintCompilation メソッドがコンパイルされた際にメッセージを表示 -XX:+UseBiasedLocking Biased Lockingを使用する -XX:+OptimizeStringConcat 可能なら文字列の連結操作の最適化を行う -XX:+AggressiveOpts 将来のリリースでデフォルトになりそうな最適化フラグを有効にする ... ... たとえばjava起動時に-XX:

    HotSpot JVMの最適化オプションについて調べる - terazzoの日記
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro

    先々週にHotSpot VMでのメモリー管理について解説しました。ここでキーとなるのは世代別GCです。 HotSpot VMで世代別GCが採用される以前は,Old領域のGCで使用されるMark & Sweep GCだけでした。世代別GCが導入されたことにより,GCのパフォーマンスは劇的に向上したのです。 しかし,GCの進化はここで終わってしまったのではありません。Java SE 6(開発コード名Mustang)にいたるまで,様々な改良が加えられてきました。 今週はそれらの新しいGCの手法について解説していきます。その前に,まずは基となるMark & Sweep GCを説明しましょう。 Mark & Sweep GC Mark & Sweep GCは二つのフェーズでGCを行います。 はじめのフェーズで,使用しているインスタンスに印をつけます(Mark,図1a)。Markにはルートインスタン

    「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro
    Nagise
    Nagise 2011/02/23
    エスケープ解析
  • Java でサムネイル作成 その 3

    <その 1> <その 2> Java でサムネイルを作る方法についての最終回です。 前回、単純にバイキュービックなどの補間法でイメージを縮小しても、クオリティが低いということを書きました。 ところで、下のイメージを見比べてみてください。 右のイメージに比べ、あきらかに左の方がジャギが少ないと思いませんか。 この 2 つのイメージは両方ともバイリニアで縮小しています。違いは縮小率。 左が 50%、右が 48% です。 50% の場合、縮小した時に対応するピクセルは単純に求めることができます。4 ピクセルを 1 ピクセルにすればいいだけですから。 このため、品質が高いまま縮小が可能になるのです。これは最近傍だとだめなのですが、バイキュービックでも大丈夫です。ただ、パフォーマンス的にはバイリニアの方が速いので。 さて、ここで、発想を変えてみます。 つまり、縮小を 1 回で済ませなくてもいいのでは

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • JavaのSwitch構文を高速化する方法。 - kensir0uのしくみ

    Switchを使うと以下の二つの命令のどちらかがコンパイラによって生成される。 lookupswitch - switch文のcase式の値が不連続である場合値を探しながらジャンプ先を探す。 tableswitch - switch文のcase式の値が連続である場合キー値をindexとしジャンプ先アドレスを値とする配列を作り高速にジャンプする。 つまり、特に問題がないかぎり、値を連続で定義するほうが、高速化できそうだ。 全然関係ないけども、下記の書き方はコンパイル可能。 int l = 1 ; l |=l ;

    JavaのSwitch構文を高速化する方法。 - kensir0uのしくみ
  • jstat - Java 仮想マシン統計データ監視ツール

    概要 説明 仮想マシン識別子 オプション   - 一般的なオプション   - 出力オプション 例 関連項目 形式 jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] generalOption 単独で使用する一般的なコマンド行オプションです (-help、-options、または -version)。 outputOptions 単一の statOption と、-t、-h、および -J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 vmidターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 [protocol:][//]lvmid[@hostname[:port]/servername] vmid 文

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 1