2009-09-09 3 views

답변

3

스펙은 JVM이 구현하는 방식으로 구현되는 방식이 아닙니다. IBM과 Sun과 같은 다른 플랫폼과 다른 JVM은 다른 구현을 사용할 것이므로 바이트 크기와 프로세서 사이클에 대해 아무 것도 생각할 수 없습니다. 실제로 더 많은 정보를 찾고 싶다면 Open JDK 소스를 다운로드하여 살펴볼 수 있습니다. 그러나 이것은 하나의 구현 일 뿐이며 다른 구현체가 동일한 성능 특성을 가질 것이라고 가정 할 수 없습니다.

+0

Windows 시스템에서 사용할 수있는 벤치 마크가 없습니까? –

+2

Windows에서 실행되는 여러 JVM이 있으므로 "Windows 시스템"의 간단한 벤치 마크가 적합하지 않습니다. 이러한 벤치 마크는 해당 환경의 특정 JVM에 대한 정보 만 제공합니다. –

+0

Java, IBM, Sun, Open JDK 등의 버전을 모두 비교할 수있는 벤치 마크는 없습니다. – Jared

6

이미 언급 한 것처럼 그것이 존재하지 않기 때문에 찾는 정보는 존재하지 않습니다. 다른 JVM이 명령어 (또는 명령어 조합)를 다르게 구현할 수 있다는 사실을 제외하고는 단일 JVM이이를 다르게 구현할 수도 있습니다.

이것은 다른 명령어 조합 (다른 명령어와 함께 사용되는 방법에 따라 다른 방법으로 명령어를 구현하는 것이 더 효율적일 수 있음)과 실행의 다른 경우 모두에 해당됩니다. JVM은 항상 프로그램의 실행을 제어하기 때문에 프로그램의 동작을 모니터하고 자주 실행되는 코드 (또는 그와 관련된 다른 기준을 충족시키는 코드)를 다시 최적화하도록 결정할 수 있습니다. 예를 들어, 명령이 함수가 실행 된 첫 1000 번 특정 명령 세트로 변환되고 실행의 나머지 세트가 다른 세트로 변환되는 결과가 발생할 수 있습니다.

이 고급 최적화 기능은 Java 바이트 코드 최적화를 JVM에 맡기는 것이 가장 좋은 이유이며 일부 경우 Java 프로그램이 동등한 C 또는 C++ 프로그램 (C 및 C 프로그램보다 훨씬 빠를 수있는 이유는 무엇입니까? C++은 일반적으로 정적으로 만 최적화되지만 Java는 동적으로 최적화됩니다.

+0

"매우 빠름"을 제외하고 모두 훌륭합니다. 나는 이것이 종이 위 어디서나 일어나는 것을 아직 보지 못했다. –

+0

@Pavel Minaev : http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/에서이 링크를 볼 수 있습니다. –