問題タブ [jmh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JIT を無効にできるのに、なぜ JMH を使用するのでしょうか。
JIT をオフにできるのに、なぜ JMH をベンチマークに使用する必要があるのだろうか? JMH は、JIT を無効にすることで防止できる最適化を抑制していませんか?
java - パラメータ化された 'jmh' 測定を使用したマルチスレッド アルゴリズムのベンチマーク エラー
マルチスレッド アルゴリズムのベンチマークを行うために、パラメーター化された測定をセットアップしましたjmh
。かなりの時間が経過すると、測定がエラーでクラッシュします
このアルゴリズムは非常に限られた数のスレッドを作成し、メモリ リークは発生しません。したがって、この質問は、単一のアプリケーション内でそのエラーが発生した人々からの SO に関する他の多くの質問とは異なります。
この問題はjmh
、明らかに、OS (Ubuntu 14.04、64 ビット) または JVM が以前の実行で割り当てられたネイティブ スレッドを適切にクリーンアップしない、長時間にわたる多くの実行に起因しています。
Options
ベンチマークは、オブジェクトが次の方法で構築されるスクリプト (コマンド ラインを使用せずに Eclipse 内) から開始されます。
問題は、並行アルゴリズムがどのように適切にベンチマークされているかということです。測定は特定の方法で実行する必要がありますか? jmh
/JVMに設定された特定のパラメータ? 他の回答で提案されているように、ネイティブスレッドの許容数を増やす必要がありますか、それとも結果に影響しますか?
ナノ秒の精度は厳密には必要ないので、必ずしも必要 jmh
ではありませんが、インターフェイス、精度、および機能が気に入っています。また、問題はそれ自体よりも OS/JVM に関連していると思われjmh
ます。
java - perfasm/xperfasm/WinPerfAsmProfiler を使用して JMH を実行する方法
を使用して Windows で JMH ベンチマークを実行しようとするとWinPerfAsmProfiler
、次のエラーが発生します。
jmh - ベンチマーク結果 ForkJoin vs Disruptor?
私はこのDisruptovsFJ Mirco-Benchmarks を実行してAleskey Shipilev
、ForkJoin と Disruptor ライブラリのパフォーマンスを比較しています。
Linux プラットフォーム i5 で JDK1.8.40 を使用した結果:
の結果の最初の部分は、RingBuffer と並行コンテキストで効率を高めるメカニズムを使用しているためslicesK < 50000
、予期されていました。Disruptor
ForkJoinRecursiveDeep や ForkJoinReuse よりもテストslicesK >= 50000
のパフォーマンスが低い場合。Disruptor
誰かが私にそれらの結果を説明できますか? ありがとうございました
java - System.Nanotime の粒度とレイテンシ?
私はこのjmh
テストを見ていますhttp://hg.openjdk.java.net/code-tools/jmh/file/57623b7f64e6/jmh-core-benchmarks/src/main/java/org/openjdk/jmh/benchmarks/NanoTimerBench .java、System.nanotime()
. しかし、粒度とレイテンシの測定の違いがよくわかりません。レイテンシーの測定と粒度の測定の違いは何ですか?
java - Java 8 ストリームの予期しないパフォーマンス低下が明らかな理由もなく発生する
サブリストを含むリストを反復処理するために Java 8 ストリームを使用しています。外側のリストのサイズは 100 から 1000 の間で変化し (さまざまなテスト実行)、内側のリストのサイズは常に 5 です。
予期しないパフォーマンス偏差を示す 2 つのベンチマーク実行があります。
実行 1
実行 2
2 つの質問があります。
- 両方のテスト実行で、loop+500 と loop+600 の間に一貫して大きなパフォーマンスの違いがあるのはなぜですか?
- Run1 ストリーム + 400 と Run2 ストリーム + 300 で、一貫性のない重大なパフォーマンス偏差があるのはなぜですか?
JIT は時々最適化の決定を下し、パフォーマンスが大幅に低下するようです。
テスト マシンには 128 GB の RAM と 32 個の CPU コアがあります。
PS ストリームなしでベンチマークを追加しました。これらのテスト (ループ + ストリーム + pureLoop) では、ストリームとラムダを使用するには多くのマイクロ最適化作業が必要であり、いずれにしても一貫したパフォーマンスは保証されないと思います。
実行 3 (純粋なループ)
解決策: apangin が推奨するように、階層化されたコンパイルを無効にすると、JIT の結果が安定しました。
java - Hadoop YARN の JMH ベンチマーク
MapReduce ジョブの JMH ベンチマークを作成しました。アプリをローカル モードで実行すると機能しますが、Hadoop クラスターで yarn スクリプトを使用して実行すると、次のエラーが発生します。
私のシェルスクリプトは次のとおりです。
私のベンチマークオプションは次のとおりです。