컴파일러 | - 소스 코드를 기계어로 번역해주는 프로그램 - 모든 소스 코드의 번역이 완료된 후 실행 - 런타임 이전에 번역이 완료되므로 성능 최적화가 용이 - C, C++ 등이 컴파일 언어에 속함 |
인터프리터 | - 소스 코드를 미리 번역하지 않고, 런타임에 순차적으로 실행시키는 프로그램 - 소스 코드를 직접 실행할 수도 있고, 중간 언어를 거칠 수도 있음 - 컴파일러에 비해 성능이 불리하여, JIT 컴파일러와 혼용하는 경우가 있음 - JS, Python이 인터프리터 언어에 속함 |
* JIT 컴파일러란?
런타임에 컴파일을 진행하되, 번역된 기계어를 캐싱하여 재사용하는 디자인.
JVM의 경우 인터프리터와 JIT 컴파일러를 동시에 사용한다. 호출 횟수가 임계치를 초과하는 메서드에 대해서만 컴파일을 진행하는 식이다. 모든 메서드에 대하여 컴파일 및 캐싱을 수행하기에는 계산 시간과 메모리 사용량에 부담이 있다.
'CS > 기타' 카테고리의 다른 글
정지 문제(Halting problem)의 간단한 증명 (0) | 2023.04.28 |
---|---|
빅 엔디안과 리틀 엔디안을 직접 확인해보자 (0) | 2023.02.04 |
부동소수점의 정밀도 문제에 대하여 (0) | 2022.10.28 |
댓글