필자는 Yourkit 8.0을 사용하여 Mac OS X (10.5.7, Apple JDK 1.6.0_06-b06-57)에서 실행되는 수학 집중 애플리케이션을 프로파일 링했으며, 이상한 점을 발견했습니다 CPU 프로파일 링 결과의 동작자바 이상한 결과로 네이티브 메소드 프로파일하기
예를 들어, 필자는 샘플링을 사용하여 프로파일 링을 실행했는데, 이는 응용 프로그램의 10 분 런타임의 40 %가 StrictMath.atan 메서드에서 사용 된 것으로보고했습니다. 나는이 수수께끼를 발견했지만, 나는 그것을 말로 표현하고 atan을 극히 간단하게 다항식으로 바꾸는 데 약간의 시간을 보냈다.
응용 프로그램을 다시 실행하면 이전과 거의 동일한 시간 (10 분)이 걸렸지 만 atan 대체 프로그램은 프로파일 링 결과에 아무데도 나타나지 않습니다. 대신, 다른 주요 핫스팟의 런타임 퍼센티지는 단순히 그것을 보충하기 위해 증가했습니다.
는 요약하자면
결과를 StrictMath.atan (원시 메소드)
총 런타임 함께 10 분
방법 1 : 20 %
방법 2 : 20 %
방법 3 : 20 %
StrictMath.atan : 40 %
총 런타임 ATAN 단순화, 순수 자바
결과 : 10 MINU TES
방법 1 : 33 %는
방법 2 : 33 %
방법 3 :
는 (방법 1,2,3 어떤 ATAN 호출을 수행하지 않음)
은 어떤 생각이 무엇 33 %입니다 이 행동으로? EJ-Technologies의 JProfiler를 사용하여 동일한 결과를 얻었습니다. JDK 프로파일 링 API가 원시 메소드에 대해 OS X에서 부정확 한 결과를보고하는 것처럼 보입니다.
'atan'이 내장되어 있으면 놀라지 않을 것입니다. 메소드를 호출하는 대신 해당 기계 코드가 인라인으로 주입됩니다. –
Mac OS X 10.7의 StrictMath (및 이전 버전도 마찬가지 임)에서 다양한 방법으로이 기능을 경험했습니다. –
그래서이 문제에 대한 해결책이 있습니까? – ziggystar