CS/기타

컴파일러와 인터프리터 (+ JIT 컴파일러)

alpacadabra 2024. 12. 5. 01:48

사진 출처 : https://www.ankitweblogic.com/c/compiler-and-interpreter.php

 

컴파일러 - 소스 코드를 기계어로 번역해주는 프로그램
- 모든 소스 코드의 번역이 완료된 후 실행
- 런타임 이전에 번역이 완료되므로 성능 최적화가 용이
- C, C++ 등이 컴파일 언어에 속함
인터프리터 - 소스 코드를 미리 번역하지 않고, 런타임에 순차적으로 실행시키는 프로그램
- 소스 코드를 직접 실행할 수도 있고, 중간 언어를 거칠 수도 있음
- 컴파일러에 비해 성능이 불리하여, JIT 컴파일러와 혼용하는 경우가 있음
- JS, Python이 인터프리터 언어에 속함

 

* JIT 컴파일러란?

런타임에 컴파일을 진행하되, 번역된 기계어를 캐싱하여 재사용하는 디자인.

JVM의 경우 인터프리터와 JIT 컴파일러를 동시에 사용한다. 호출 횟수가 임계치를 초과하는 메서드에 대해서만 컴파일을 진행하는 식이다. 모든 메서드에 대하여 컴파일 및 캐싱을 수행하기에는 계산 시간과 메모리 사용량에 부담이 있다.