문제

Javac으로 디버그 정보 생성을 켜면 클래스 파일이 20-25% 더 큽니다. 이것이 Java 프로그램 실행에 영향을 미칩니 까? 어떤 조건과 얼마나 많은지 예. 파일이 더 크기 때문에 클래스로드에 약간의 영향을 미치지 만 최소화해야합니다.

도움이 되었습니까?

해결책

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

추신. 디버깅의 경우 종종 최적화를 끄는 데 가치가 있습니다. 저것 하다 성능에 영향을 미칩니다.

다른 팁

디버깅 만 끄는 것은 전혀 차이를 만들지 않아도됩니다. 그러나 디버깅을 끄고 최적화를 켜면 컴파일 시간에 정적 최적화가되므로 차이가 나타납니다. 이런 식으로 핫스팟 최적화 된 코드조차 런타임에 더 빨리 얻습니다.

그러나 지금까지, 전체 스택 트레이스를 의미하는 것 사이의 상충 관계 또는보다 사용자 성능이 더 높은 절충으로 나는 항상 스택 트레이스에 투표했습니다. 결국, 사용자는 더 빠른 기계를 얻기 위해 매년 1000 달러를 기꺼이 지출하지만 문제를 해결하기 위해 의미있는 오류 메시지를 제공하기 위해 15 분을 기꺼이 소비하지 않습니다.

몇 년이 지난 후, 나는 사용자의 1000 $보다 15 분 더 높은 평가를 기꺼이 평가할 의향이 있습니다. :)

JDK1.3 JAVAC은 최적화 플래그를 무시하기 때문에 "컴파일 타임 최적화는 불필요하다"는 점에 유의하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top