본문 바로가기

컴파일러

(2)
JAVA JIT 컴파일러 JAVA 프로그램은 여타 언어들처럼 프로그램 → 컴파일러(최적화) → 네이티브 코드이나, 프로그램 → 인터프리터(직접실행) 방식이 아닌 프로그램 → 컴파일러 → 가상머신(최적화 및 직접실행)의 방식으로 실행된다. 그 중에서 눈여겨 볼 수 있는 것은, 바로 실행시간 최적화를 하는 JIT 컴파일러인데, 오늘은 이에 대해 다루어본다. 개괄 JIT(Just-In-Time) 컴파일러는 런타임시 .class 바이트 코드를 네이티브 코드로 컴파일하여 JAVA 응용 프로그램의 성능을 향상시키는 런타임 환경의 구성 요소이다. 자바 프로그램은 여러 컴퓨터 아키텍처 환경에서 JVM이 해석할 수 있는 플랫폼 중립(platform-neutral)적인 바이트 코드를 포함하는 클래스로 구성된다. 런타임에 JVM은 클래스 파일을 로..
컴파일러 최적화 종류와 기법 정리 컴파일러 Back-end에서는 어떻게든 머신 인스트럭션의 갯수를 하나라도 줄이고자 노력한다. 컴파일러 최적화 기법은 컴파일러마다 다양하지만, 일반적으로 많이 사용되는 것은 주로 상수 연산을 최대한 줄이는 것이다. 다음 기법들은 일반적인 컴파일러에서 통용되는 최적화 기법들이다. 1. Copy propagation Copy propagation은 직접 할당의 대상을 해당 값으로 대체하는 최적화 과정이다. 아래와 같이 y = x의 직접 할당은 해당 값으로 대체될 수 있다. 최적화 이전 최적화 이후 2. Constant folding Constant Folding은 런타임에 계산 전, 컴파일 타임에 상수 표현을 인식하고 처리하는 최적화 과정이다. 최적화 이전 1스텝 진행 결과 2번째 줄, b의 할당 값인 9 -..