問題タブ [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.

0 投票する
4 に答える
8996 参照

java - JMH が Eclipse で動作しない (Maven プロジェクトとして) - 実行するベンチマークがありません

JMH を見てみたいのですが、何らかの理由でベンチマークを実行できません。私が試したことを説明しましょう:

  1. Eclipse で Maven プロジェクトをセットアップする
  2. 次のように pom.xml を定義します。 ここに画像の説明を入力

  3. 公式の JMH の例をいくつかダウンロードしました。例として、非常にシンプルで開始するのに適した場所を選択しました 。 /jmh/samples/JMHSample_01_HelloWorld.java

  4. マウスの右クリック > Run As > Java アプリケーション

ただし、これにより出力が生成されます。

私はグーグルで検索しましたが、上記の例は機能するはずですが、私には当てはまりません。私も読んで問題を解決しようとしましたが、これはうまくいかないようです:

JMH は /META-INF/MicroBenchmarks にいくつかの有効な行を生成する必要があるようです。つまり、このフォルダーには生成された Java クラス ファイルが存在しないはずですよね?

誰でも間違いを見つけるのを手伝ってもらえますか? ありがとうございました。

0 投票する
2 に答える
1773 参照

java - パフォーマンス テストのための oracle jdk 8 でのベンチマーク

通常、パフォーマンスをテストしたいときは、コードを実行する前と実行した後に System.nanoTime() 関数を使用してから、減算を行っています。最近、私は人々が使用していることに気づきました

openjdkのJMHの一部です。

Oracle jdkを使用しています。System.nanoTime を記述する代わりに、同様のツールがあるか、またはナノ/マイクロ/ミリ/マクロ ベンチマークを構築、実行、および分析する別の方法があるかどうか疑問に思います。

0 投票する
2 に答える
210 参照

java - マイクロベンチマーク フレームワークを使用して、一部のステートメントのみを計測することは可能ですか?

ローカルデータベースとリモートデータベースへの複数の呼び出しを含む Java コードのマイクロベンチマークを計画しています。私は System.nanoTime() を使用しようとしていましたが、jmh や caliper などのマイクロ ベンチマーク フレームワークについて読み始めました。これらのフレームワークの使用は間違いなく推奨されますが、私が読んだ(ほとんど)ものから、完全な方法のみをベンチマークすることができ、非侵襲的に(既存のコードに対して)これを行うことができるようです。つまり、既存のコードを捨てる必要はありませんjmh/caliper のコード/注釈付き。

一部のメソッド内の特定のコード (ステートメント) のみをベンチマークしたいと考えています。マイクロベンチマークフレームワークでこれを行うことは可能ですか? これについていくつかの洞察を提供してください。

0 投票する
4 に答える
1312 参照

java - Java はメソッドの結果をキャッシュしますか?

JMHを使用して操作の複雑さを指定します。JMH を使ったことがなくても心配はいりません。JMH はestimateOperationメソッドを複数回起動し、平均時間を取得します。

質問: [narrow]このプログラムはMath.cbrt(Integer.MAX_VALUE)毎回計算しますか? それとも、一度計算して、後でキャッシュされた結果を返すだけですか?

質問: [広義]: JVM はメソッドの結果をキャッシュしますか?

0 投票する
1 に答える
1855 参照

java - JMH - Mavenなしで実行

非常に基本的な JMH テスト スイートをセットアップしようとしていますが、テストで jar を生成することはできません...クラスパスに注釈プロセッサがあり、jmh コアもあり、1 つの単純なクラスですが、実行するとMain.main()jar がありません。生成されています(IntelliJから実行しています)。実行中に欠落しているパラメーター/オプションはありますか?

0 投票する
1 に答える
3045 参照

java - Java HashMap Get のベンチマーク (JMH vs ループ)

私の最終的な目標は、標準の Java コレクションをベースラインとして使用して、いくつかの Java プリミティブ コレクション ライブラリの包括的なベンチマーク セットを作成することです。過去に、私はこれらの種類のマイクロベンチマークを作成するループ方法を使用しました。ベンチマークしている関数をループに入れて 100 万回以上反復するので、jit はウォームアップする機会があります。ループの合計時間を取り、反復回数で割って、ベンチマークしている関数への 1 回の呼び出しにかかる時間を見積もります。最近、JMHプロジェクト、具体的には次の例について読んだ後: JMHSample_11_Loopsこのアプローチの問題を確認しました。

私のマシン:

上記のループ メソッド コードの簡略化された単純な例を次に示します。

JMH を使用してこのベンチマークを書き直そうとしているのは次のとおりです。

結果は次のとおりです。

私が知る限り、JMH の同じベンチマークでは、ハッシュマップが31ナノ秒であるのに対し、ループ テストでは552ナノ秒です。31 ナノ秒は、私には少し速すぎるようです。すべてのプログラマーが知っておくべきレイテンシの数値を見るメインメモリの参照は約 100 ナノ秒です。L2 キャッシュ参照は約 7 ナノ秒ですが、1,000 万の Long キーと値を持つ HashMap は L2 をはるかに上回ります。また、JMH の結果は奇妙に見えます。get 呼び出しの 90% に 0.0 ナノ秒かかる?

これはユーザーエラーだと思います。ヘルプ/ポインタをいただければ幸いです。ありがとう。

アップデート

実行した結果は次のとおりAverageTimeです。これは私の期待とより一致しています。ありがとう@oleg-estekhin!以下のコメントで、私はAverageTime以前にテストを行い、SampleTime. その実行を行うには、はるかに少ないエントリで HashMap を使用し、ルックアップの高速化は理にかなっているはずです。

0 投票する
1 に答える
670 参照

java - JMH マイクロベンチマーク再帰的クイックソート

こんにちは、さまざまな並べ替えアルゴリズムをマイクロベンチマークしようとしていますが、jmh とベンチマークのクイックソートで奇妙な問題が発生しました。私の実装に何か問題があるのか​​もしれません。誰かが問題がどこにあるのかを知るのを手伝ってくれたら、私は興味があります. まず、jdk 7 と jmh 0.9.1 で ubuntu 14.04 を使用します。ベンチマークを実行しようとする方法は次のとおりです。

他のアルゴリズムもありますが、多かれ少なかれ問題ないので省略しました。何らかの理由でクイックソートが非常に遅くなりました。時間の大きさが遅くなります!さらに、StackOverflowException なしで実行するには、より多くのスタック スペースを割り当てる必要があります。何らかの理由で、クイックソートは多くの再帰呼び出しを行っているようです。興味深いことに、メイン クラスでアルゴリズムを単純に実行すると、正常に実行されます (同じランダム分布と 100000 要素で)。スタックを増やす必要はなく、単純な nanotime ベンチマークは、他のアルゴリズムに非常に近い時間を示しています。また、JDK のベンチマークでは、jmh を使用してテストすると非常に高速であり、単純なナノタイム ベンチマークを使用した他のアルゴリズムに沿ってはるかに高速です。私はここで何か間違ったことをしていますか、それとも何かを見逃していますか? これが私のクイックソートアルゴリズムです:

これで、ピボットを選択したために、既に並べ替えられたデータに対してアルゴリズムを実行すると、アルゴリズムが非常に遅くなることがわかりました (O(n^2))。しかし、それでもランダム化されたもので実行し、メインメソッドでソートされたデータで実行しようとしても、ランダム化されたデータで jmh を使用したバージョンよりもはるかに高速でした。ここで何かが欠けていると確信しています。ここで他のアルゴリズムを含む完全なプロジェクトを見つけることができます: https://github.com/ignl/SortingAlgos/