문제

Java SE 6에서 언급된 성능 향상이 컴파일러에 있는지, 아니면 런타임에 있는지 궁금합니다.달리 말하면, JDK 6으로 컴파일된 Java 5 애플리케이션이 JSE 5에서 실행되는 개선 사항(향상된 컴파일러 최적화를 나타냄)을 볼 수 있습니까?JDK 5로 컴파일된 Java 5 애플리케이션이 JSE 6에서 실행되는 개선 사항을 볼 수 있습니까(향상된 런타임 최적화를 나타냄)?

JDK 6에서 컴파일하는 데는 정확히 동일한 코드베이스에 대해 JDK 5에서보다 거의 두 배의 시간이 걸리는 것으로 나타났습니다.나는 그 여분의 시간 중 적어도 일부가 컴파일러 최적화에 소비되어 더 나은 성능의 JAR 및 WAR이 만들어지기를 바라고 있습니다.Sun의 JDK 정보는 그들이 수행한 성능 향상에 대해 실제로 자세히 설명하지 않습니다. A열에서 약간, B열에서 약간이라고 가정하지만 어느 것이 더 큰 영향을 미치는지 궁금합니다.JDK 6과 JDK 6에서 수행된 벤치마크를 아는 사람이 있습니까?JDK 5?

도움이 되었습니까?

해결책

컴파일러의 개선 사항에 대해서는 들어본 적이 없지만 런타임 성능 개선 사항에 대한 광범위한 정보가 게시되었습니다.

마이그레이션 가이드:

[http://java.sun.com/javase/6/webnotes/adoption/adoptionguide.html]

성능 백서:

[http://java.sun.com/performance/reference/whitepapers/6_performance.html]

다른 팁

Java 소스에서 바이트코드로 컴파일하는 javac는 최적화를 거의 수행하지 않습니다.실제로 최적화를 사용하면 나중에 최적화하기 위해 분석하기가 더 어려워지기 때문에 실제로 코드 실행 속도가 느려지는 경우가 많습니다.

1.5와 1.6용으로 생성된 코드 사이의 유일한 중요한 차이점은 -target 1.6을 사용하면 스택 상태에 대한 추가 정보가 추가되어 더 쉽고 빠르게 검증할 수 있다는 것입니다(Java ME도 이 작업을 수행함).이는 클래스 로딩 속도에만 영향을 미칩니다.

실제 최적화 부분은 바이트코드를 네이티브 코드로 컴파일하는 핫스팟 컴파일러입니다.이는 일부 업데이트 릴리스에서도 업데이트됩니다.Windows에서는 기본적으로 느린 클라이언트 C1 버전의 핫스팟만 JRE에 배포됩니다.서버 C2 핫스팟은 더 빠르게 실행되지만(java 명령줄에서 -server 사용) 시작 속도가 느리고 더 많은 메모리를 사용합니다.

또한 라이브러리와 도구(javac 포함)는 때때로 최적화 작업을 수행합니다.

JDK 6이 JDK 5보다 코드 컴파일 속도가 느린 이유를 모르겠습니다.설정에 미묘한 차이가 있나요?

거의 100% 런타임입니다.몇 가지 기본 컴파일 트릭을 Java 컴파일러 자체에 적용하는 것이 가능하지만 Java 1.5와 1.6 사이에 상당한 개선이 있다고는 생각하지 않습니다.

새로운 Java 가상 머신에는 많은 새로운 개선 사항과 최적화가 이루어졌습니다.따라서 향상된 성능을 볼 수 있는 주요 부분은 버전 6 jvm으로 Java를 실행하는 동안입니다.

Java 6 JDK를 사용하여 이전 Java 코드를 컴파일하면 아마도 더 효율적인 코드가 생성될 것입니다. 그러나 주요 개선 사항은 가상 머신에 있습니다. 적어도 제가 본 바로는 그렇습니다.

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