3

VisualVMを実行するためのプラグインでEclipseを使用しています。VisualVM は、関数のメソッド呼び出しが常に約 180 ミリ秒を返すと言いますが、手動メソッドを使用する場合は次のようになります。

long start = System.nanoTime();
searchConnections(bsTree, connectionList);
double elapsedTimeInSec = (System.nanoTime() - start) * 1.0e-6;

私は約50ミリ秒を取得します!なぜ違いがあるのですか?では、VisualVM の測定値は間違っているのでしょうか? あるプロジェクトで測定が必要なため、可能な限り正確であることが重要です。

4

1 に答える 1

1

あなたの質問に答えるために、JVM の性質と実行時にコードを最適化する方法のために、値が正確に異なる理由を知る簡単な方法はありません。言うまでもなく、 System.nanotime() はプラットフォーム固有の実装であり、その値が正確であることを完全に信頼することはできません。

VisualVMが実際に測定しているという理由だけで、インライン測定よりもVisualVMの結果を信頼する可能性が高くなります。ベンチマークに関心がある場合、または正確な結果を得ることに本当に集中したい場合は、このタスクにCaliperなどのツールを使用することをお勧めします。

于 2013-03-11T08:19:28.483 に答える