Just-in-time 컴파일

최근 편집: 2022년 12월 27일 (화) 16:12

Just-in-time compilation, 줄여서 JIT 컴파일이라고 부른다. 동적 번역(dynamic translation)이라고도 하며, 이 방식을 구현한 프로그래밍 언어 구현체도 흔히 JIT 컴파일러라고 일컫는다. 프로그래밍 언어 구현 방법의 하나로, 주로 인터프리터의 성능을 개선하기 위한 방법이다.

인터프리터 구현으로 실행하는 프로그램은 실행 중에 프로그램 코드를 해석하면서 진행하기 때문에, 컴파일러 구현으로 한 번에 번역한 프로그램을 실행하는 것보다 실행 속도가 느려지는 단점이 있다. 이 단점은 루프와 같이 같은 코드를 반복적으로 실행할 때 특히 두드러지는데, 심한 경우에는 루프를 돌 때마다 매번 문법 트리 파싱부터 새로 하는 대삽질을 벌일 수도 있다. 따라서 언어 구현자들은 반복적으로 도는 코드만 골라서 최적화를 하면 어떨까 하는 발상을 떠올렸고, 그걸 구현한 것이 JIT 컴파일이다.

JIT 컴파일러는 보통의 인터프리팅 과정을 수행하면서, 실행하는 코드들의 실행 횟수를 실시간으로 프로파일링한다. 그리고 특별히 많이 실행된다 싶은 코드가 발견되면 해당 코드를 "즉시(just in time)" 기계어 코드로 컴파일한다. 지금까지 많이 실행됐던 코드들은 앞으로도 많이 실행될 가능성이 높기에, 다음부터 그 부분을 실행할 때는 훨씬 빠른 기계어 코드를 대신 실행할 수 있게 된다.

주요 구현체