ストップウォッチによるベンチマークは認められるか?
質問
ストップウォッチによるベンチマークを使ったことがある人はいますか? Java 用に利用可能な無料の良いツールはありますか。 あなたはどのようなツールを使っていますか?
私の懸念を明確にするために、ストップウォッチ ベンチマークは、オペレーティング システムのスケジューリングによる誤差の影響を受けます。 プログラムの特定の実行時に、OS は、タイミングをとっている関数の途中で別のプロセス (または複数) をスケジュールする可能性があります。 Java では、JVM スケジューラーがミックスにさらに少し多くのランダム性を投げるため、スレッド化されたアプリケーションをタイムアウトさせようとしている場合、状況はさらに少し悪くなります。
ベンチマークを行う際、オペレーティング システムのスケジューリングにどのように対処しますか?
どのように解決するのですか?
ストップウォッチによるベンチマークは、以下を測定していれば問題ありません。 十分な の繰り返しを測定すれば問題ありません。 一般的に、私は一桁の秒数の合計経過時間を必要とします。 そうでなければ、スケジューリングやその他の O/S によるプロセスの中断により、結果が大きく歪んでしまいます。
このために、私はずっと前に構築した静的メソッドの小さなセットを使用します。
System.currentTimeMillis()
.
プロファイリング作業には jプロファイラ を何年か使っていて、とても良いものだとわかっています。 最近、私は ユアキット を検討しましたが、個人的にはまったく使っていません。
割り込みのスケジューリングに関する質問に答えるために、一貫性が達成/観察されるまで繰り返し実行することは、プロセス スケジューリングから異常な結果を除外するために実際に機能することがわかります。 また、スレッドスケジューリングは、5 秒から 30 秒の実行では実用的な影響がないことがわかります。 最後に、数秒のしきい値を超えた後、スケジューリングは、私の経験では、結果に対して無視できるほどの影響を及ぼします。
また、実際の生活で時間をかけてテストされるコードの実行回数に応じて、JIT をウォームアップするために約 10,000 回テストされたコードを事前に実行することを考慮したいと思うかもしれません。
関連
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Uncaught ReferenceError: は定義されていません。
-
配列定数は初期化子でのみ使用可能です。
-
FindBugの使用概要
-
Java基礎編 - オブジェクト指向
-
switch case文のcaseの後の列挙定数は列挙型なし
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
[解決済み] ベンチマーク(BLASによるpythonとc++)と(numpy)
-
[解決済み] Rustのベンチマークプログラム
-
Contains、Exists、Anyのパフォーマンスベンチマーク
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
javaの非静的メソッドを静的に参照することができない
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
シェルコマンドやスクリプトのJavaコール
-
ジャバアレイ
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
コンストラクタDate()が未定義である問題
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
Java基礎 - マッピングとQ/A
-
[解決済み] Javaで正しいマイクロベンチマークを書くには?