問題タブ [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 - jmh で getbytes の小さなベンチマークを作成する方法は?
私はJMHとベンチマークが初めてです。public byte[]getBytes(String charsetName) メソッドの小さなテストを書きました。ただし、maven はビルドに失敗します。これが私のコードです:
実行すると: mvn clean install. ビルド失敗のエラー メッセージが表示されます。
java - jmhで操作とはどういう意味ですか?
jmh の結果では、スコアは ns/op で表され、操作ごとに費やされた時間 (ナノ秒) です。操作はベンチマーク コールを参照していますか? その場合、スコアが低いほど呼び出しが速くなりますか?
java - jmh 測定値のエラーの原因は何ですか?
jmh テストのスコア結果に許容誤差が生じる原因として考えられるものを教えてください。結局のところ、それは何度も繰り返し実行された同じコードです。
java - プリミティブを返すよりもJavaオブジェクト参照を返す方がはるかに遅いのはなぜですか
私たちはレイテンシーの影響を受けやすいアプリケーションに取り組んでおり、あらゆる種類のメソッドを ( jmhを使用して) マイクロベンチマークしています。ルックアップ メソッドをマイクロベンチマークし、結果に満足した後、最終バージョンを実装しましたが、最終バージョンはベンチマークしたばかりの 3 倍遅いことがわかりました。
enum
原因は、実装されたメソッドがではなくオブジェクトを返していたことint
です。以下は、ベンチマーク コードの簡略化されたバージョンです。
上記のベンチマーク結果:
関数の戻り値の型を変更するだけで、パフォーマンスがほぼ 3 倍向上しました。
列挙型オブジェクトと整数を返すことの唯一の違いは、一方が 64 ビット値 (参照) を返し、もう一方が 32 ビット値を返すことだと思いました。私の同僚の 1 人は、潜在的な GC の参照を追跡する必要があるため、enum を返すと追加のオーバーヘッドが追加されると推測していました。(しかし、enum オブジェクトが静的な最終参照であることを考えると、そうする必要があるのは奇妙に思えます)。
パフォーマンスの違いの説明は何ですか?
アップデート
誰でもクローンを作成してベンチマークを実行できるように、ここで Maven プロジェクトを共有しました。誰かが時間/興味を持っている場合は、他の人が同じ結果を再現できるかどうかを確認するのに役立ちます. (私は Windows 64 と Linux 64 の 2 つの異なるマシンでレプリケートしました。どちらも Oracle Java 1.7 JVM のフレーバーを使用しています)。@ZhekaKozlov は、メソッド間に違いは見られなかったと述べています。
実行するには: (リポジトリのクローン作成後)
java - JMHにJava 8を使用するには?
JMH を使用してベンチマークを作成しましたが、ビルド時に次のようなコンパイル エラーが発生しました。
JAVA_HOME
jdk1.8_40に設定されています。pom.xml
jmh ソース フォルダー jmh-core 内のターゲットとソースを変更しようとしました。
しかし、私はまだ同じエラーが発生します