Pages

2015년 1월 21일 수요일

[JAVA] Java vs C++ Performance Comparison, JIT Compilers, Java Hotspot & C++ Native Compiler

C ++ 과 JAVA 사이의 성능 차이는 지난 년 동안 축소되었다; 
연구 (Y Nikishkov, G Nikishkov & Savchenko, 2003; Taboada et al. 2013; 
Lewis & Neumann 2013; Oracle n.d.; Oancea et al. 2011) 

JAVA는 C++에 견줘 볼때 유사한 성능을 달성 할 수있는 것으로 나타났습니다. 
기본적으로 C++와 같은 언어를 컴파일 할 수 있습니다. Taboada 등은. (2013, p425) JAVA 가상 머신의 Just-In-Time(JIT) 컴파일러 덕분에 (JVM)이 JAVA는 JAVA 바이트 
코드에서 Native 성능을 획득한다고 주장합니다.

Just-In-Time(JIT) 컴파일러는 크게 JAVA 응용 프로그램의 실행 속도를 높일 수 
있습니다. JIT는 JAVA 바이트 코드를 받아 실행 전에 Native 코드로 컴파일 하는 
JVM의 필수적인 부분입니다.  JAVA 언어는 동적이므로 JIT는 호출 직전 method-by-
method를 기초하여 Method를 컴파일한다. 같은 방법이 여러 번 호출이나 Method가 
많은 반복 Native 코드의 재실행의 효과를 루프가 포함되어 있는 경우는 극적으로 
Java 코드의 성능을 변경할 수 있습니다.

JIT 컴파일은 대상 CPU와 응용 프로그램이 실행되는 운영 체제 모델에 최적화 할 수
있다. 시스템은 프로그램이 실제로 그것이 인 환경에서 실행되고 있는지에 대한 통계를 
수집 할 수 있고, 그것은 재배치 및 최적의 성능을 위해 재 컴파일 할 수 있습니다.

JIT 컴파일러의 개발은 JAVA 핫 컴파일러를 사용하여 Oracle에 의해 이루어지고있다. 그들은 주된 이유 JIT 최적화되어 C ++보다 더 효과적임을 주장 :

1) JAVA는 동적으로 안전하다; 이 프로그램은 의미를 위반하거나 직접 신뢰할 수없는 메모리에 액세스 할 수 있도록하지 않습니다 보장합니다. 동적 형식 시험은 자주 수행해야합니다.

2) JAVA 언어는 많은 개체가 할당되어 스택 C ++, 대조, 힙에 모든 객체를 할당한다. 이 객체 할당 비율이 C ++보다 JAVA 언어에 대한 훨씬 더 높은 것을 의미한다.

3) JAVA 언어, 가장 메소드 호출은 가상이며, 더 자주 C++에 비해 사용된다.

4) JAVA 기술 기반 프로그램으로 인해 클래스의 동적로드를 수행 할 수있는 능력을 실시간으로 변경할 수 있습니다.

오라클은 JAVA 핫스팟 가상 머신 인터프리터 등을 사용해서 프로그램을 실행하여 이러한 문제를 극복하고, 이 프로그램에 핫스팟을 감지 실행되는 코드를 분석 할 것을 주장한다. 그런 다음 핫스팟에 글로벌 Native 코드 최적화의 관심을 초점을 맞추고있다. 이것은 자주 사용되는 코드의 컴파일을 방지 할 수 있습니다. 핫스팟이 모니터링은 그대로 사용자의 요구에 실시간으로 성능을 적응되도록 프로그램이 실행될 때 동적으로 계속된다.

- JVM이 JAVA를 컴파일하기 전에 인터프리터 프로그램 실행 프로필 깊은 인라인 잠재적 가상 통화, 고속의 인스턴스의 / checkcast, 범위 체크 제거, 루프 언 롤링, 피드백 감독 최적화 인라인 : 오라클은 주요 컴파일러 최적화가 있음을 나타냅니다. 최적화 된 머신 코드 및 프로파일 정보에 바이트 코드보다 적극적 및 낙관적 특정 상황에서 코드를 최적화하기 위해 컴파일러에 의해 나중에 사용된다. 이것은 C++ 프로그램보다 유사하거나 강판 속도에서 실행하는 JAVA 응용 프로그램에 있습니다.

연구 (Oancea 등., 2011) 개발 복잡한 데이터 응용 프로그램을 비교 성과를 달성 할 수있는 핫스팟 기술과 자바의 사용이 기본적으로 언어를 컴파일하는 것으로 나타났습니다. 또한, 최근의 연구 (Haubl 및 윔머 및 2013 Mossenbock)는 자바 가상 머신에 추가 최적화를 현재 JIT 관련하여 성능의 증가 피크를 보여 주었다.


[출처 : http://codexpi.com/java-vs-cpp-performance-comparison-jit-compilers-java-hotspot-c-native-compiler/]

댓글 없음:

댓글 쓰기