jvisualvm을 사용하여 relativly 간단한 자바 프로그램을 프로파일 링하려고했습니다. 결과는 다소 이상합니다. 작은 4 줄 방법은 다른 방법보다 훨씬 많은 자체 시간을가집니다!이상한 프로파일 러 결과
public class Hub
public void clock() {
for (int i = 0; i < cogs.length; i++) {
cogs[i].clock(cnt, i, this);
}
cnt++;
}
}
참고 :이 경우 cgs.length는 8입니다.
Cog.clock 메서드가 상당히 큽니다. 이상합니다.
public class Cog
public void clock(int cnt, int cogid, Hub hub) {
if (state == State.STOP)
return;
//long code goes here
}
}
그러나 shouldn ': 내가 가지고 올 수있는 유일한 그럴듯한 설명은 (이 경우 8 6) 대부분의 코그 객체가 같은 사로 잡았하는 "정지"상태에있을 것이라는 사실이다 큰 영향을줍니다! 여기에 증거 사진입니다 :
'clock()'을 몇 번이나 호출하고 있습니까? 나머지 코드는 어디에 있습니까? –
Hub.clock과 Cog.clock의 차이를 명확히하기 위해 편집했습니다. 기본적으로 Hub.clock은 무한 루프에서 호출되며 모든 Cog 객체에서 시계를 호출합니다. –
나는 프로파일 러를 많이 신뢰하지 않을 것이다. 측정은 실행에 영향을 주며 많은 문제가 있습니다. 총 런타임이 실제로 10ms이면,이를 잊어 버릴 수 있습니다. JVM은 모든 것을 제대로 최적화하기 위해 더 많은 것을 필요로합니다. 속도 문제에 직면하지 않으면 무시할 수 있습니다. (제가 여기에 정확히 무엇이 될지 궁금합니다.) 그렇지 않은 경우 더 긴 측정을 수행하고 결과를 게시하십시오. – maaartinus