developer tip

Javac 디버그 설정과 해제간에 성능 차이가 있습니까?

copycodes 2020. 12. 5. 09:59
반응형

Javac 디버그 설정과 해제간에 성능 차이가 있습니까?


Javac로 디버그 정보 생성을 켜면 클래스 파일이 20-25 % 더 커집니다. Java 프로그램 실행에 성능 영향이 있습니까? 예인 경우 어떤 조건과 얼마나 많이. 파일이 더 크기 때문에 클래스를로드하는 데 약간의 영향을 미칠 것으로 예상하지만 이것은 최소한이어야합니다.


모든 언어에서 디버깅 정보는 메타 정보입니다. 본질적으로 개체 파일의 크기가 증가하므로로드 시간이 늘어납니다. 디버거 외부에서 실행하는 동안이 정보는 실제로 완전히 무시됩니다. JVM 사양 에 설명 된대로 (명확하지는 않지만) 디버그 정보는 바이트 코드 스트림 외부에 저장됩니다. 이는 실행시 클래스 파일에 차이가 없음을 의미합니다. 그래도 확인하고 싶다면 시도해보십시오 :-).

추신. 종종 디버깅을 위해 최적화를 해제하는 것이 가치가 있습니다. 않는 성능에 영향을 줄.


디버깅 만 꺼도 아무런 차이가 없습니다. 그러나 디버깅을 끄고 최적화를 켜면 컴파일 시간에 일부 정적 최적화가 이루어 지므로 차이점을 확인해야합니다. 이렇게하면 핫스팟 최적화 코드도 런타임에 더 빨라집니다.

그러나 지금까지 전체 스택 추적을 의미하는 것과 사용자 성능을 향상시키는 것 사이의 절충안은 항상 스택 추적에 투표했습니다. 결국, 사용자는 더 빠른 시스템을 얻기 위해 매년 1000 달러를 지출 할 의향이 있지만 문제를 해결하기 위해 의미있는 오류 메시지를 제공하는 데 15 분을 소비하지 않으려 고합니다.

몇 년이 지나면 사용자의 1000 달러보다 15 분 더 높은 가치를 기꺼이 생각합니다. :)


JDK1.3 javac는 모든 최적화 플래그를 무시하므로 "컴파일 시간 최적화가 필요하지 않습니다."

참고 URL : https://stackoverflow.com/questions/218033/is-there-a-performance-difference-between-javac-debug-on-and-off

반응형