CPUプロファイリング結果の動作例えばプロファイリングネイティブメソッド - 奇妙な結果
- 私は、アプリケーションの10分の実行時間の40%がStrictMath.atanメソッドに費やされたことを報告したサンプリングを使用して、プロファイリング実行をしました。私はこの困惑を見つけましたが、私はそれを語り、atanを非常に単純な多項式に置き換えて少し時間を費やしました。私は再度アプリケーションを実行したとき
、それは(10分)前とほとんど同じ時間がかかった - しかし、私のATANの交換は、プロファイリング結果にどこまで認められませんでした。代わりに、他の主要なホットスポットのランタイムパーセンテージは単にそれを補うために増加しました。 StrictMath.atan WITH
結果(ネイティブメソッド)
総ランタイム:10分
方法1:20%
方法2:20%
方法3:20%
を要約する
StrictMath.atan:40%
合計ランタイムATAN単純化し、純粋なJavaのWITH
結果:10ありませんTES
方法1:33%
方法2:33%
方法3:33%
(メソッド1,2,3のいずれかのATAN呼び出しを実行しないでください)
何であるか任意のアイデアこのような振る舞いで?私はEJ-TechnologiesのJProfilerを使って同じ結果を得ました。 JDKプロファイリングAPIは、少なくともOS Xのネイティブメソッドでは不正確な結果を報告するようです。
メソッドが呼び出される代わりに、atanがイントリンシックであれば驚くことはありません。 –
私はMac OS X 10.7(およびそれ以前のバージョンも)のStrictMathのさまざまなメソッドでこれを経験しました。 –
この問題の解決方法はありますか? – ziggystar