동적 컴파일

동적 컴파일(Dynamic compilation)은 프로그램 실행 중에 성능을 얻기 위해 일부 프로그래밍 언어 구현체가 사용하는 프로세스이다. 이 기법이 스몰토크에서 유래하였지만 이 기법은 사용하는 가장 잘 알려진 언어는 자바이다. 동적 컴파일러가 출력하는 기계어가 프로그램 런타임 시점에 구성되고 최적화되기 때문에 동적 컴파일을 사용하면 코드 중복이나 메타프로그래밍을 경유하는 것을 제외하고 정적 컴파일(예: 이른바 "배치 컴파일러"에 의해 컴파일)된 프로그램들에서는 사용이 불가능한 효율성을 위한 최적화를 가능케 해준다.

동적 컴파일을 사용한 런타임 환경은 보통 처음 수분간 느리게 실행되는 프로그램들을 보유하며 그 뒤로 대부분의 컴파일과 재컴파일이 끝나면 빠르게 실행된다. 초기 성능 랙(lag)으로 인해 동적 컴파일은 특정한 상황에서는 적합하지 않다. 대부분의 동적 컴파일 구현체에서 초기 컴파일 타임에 수행 가능한 일부 최적화는 런타임 시점의 추가 컴파일 때까지 지연되므로 불필요한 속도 저하를 일으킨다. JIT 컴파일은 동적 컴파일의 일종이다.

같이 보기 
 트랜스메타
 동적 재컴파일
 JIT 컴파일

각주

외부 링크 
The UW Dynamic Compilation Project
Architecture Emulation through Dynamic Compilation
SCIRun
Article "Dynamic Compilation, Reflection, & Customizable Apps" by David B. Scofield and Eric Bergman-Terrell
Article "High-performance XML: Dynamic XPath expressions compilation" by Daniel Cazzulino
 Matthew R. Arnold, Stephen Fink, David P. Grove, Michael Hind, and Peter F. Sweeney, A Survey of Adaptive Optimization in Virtual Machines, Proceedings of the IEEE, 92(2), February 2005, Pages 449-466.
컴파일러 구성