더보기
컴파일러와 인터프리터는 모두 프로그래밍 언어를 실행 가능한 기계어로 번역하는 프로그램이다.
컴파일러는 전체 소스코드를 한 번에 미리 번역해 실행 시 프로그램의 속도가 빠르지만, 디버깅이 어렵다.
반면 인터프리터는 소스코드를 한 줄씩 중간 코드로 모두 번역한 후 실행하여 디버깅이 용이하지만, 프로그램 실행 속도가 느려질 수 있다.

컴파일러 (Compiler)
ex. C, C++
장점
- 컴파일이 완료된 실행 파일은 컴퓨터에서 빠르게 실행할 수 있어 효율적이다.
- 기계어로 번역되기 때문에 프로그램 코드가 유출되지 않는다.
- 컴파일 에러와 관련된 에러를 초기에 발견할 수 있다.
단점
- 코드를 수정하면 컴파일을 다시 수행해야 한다.
- 소스 파일 전체를 컴파일 해야하므로 용량이 크다. 즉, 수정사항이 빈번이 발생할 경우 문제가 발생할 수 있다.
- 모든 소스 파일을 한 번에 번역하므로 컴파일 시간은 느릴 수 있다.
인터프리터 (Interpreter)
ex. Python, JavaScript
장점
- 시스템 간의 이식성이 뛰어나다.
→ 실행환경만 있으면 소스코드를 수행하지 않고도 다양한 OS에서 실행할 수 있다. - 코드를 수정하면 필요한 부분만 다시 번역하므로 코드 수정에 용이하다.
단점
- 매번 한 줄 마다 번역과정을 거치므로 프로그램 실행 속도가 느릴 수 있다.
- 중간 코드로 해석되어 프로그램 코드가 유출될 수 있다.
JIT (Just In Time)
필요한 순간에 컴파일을 실행하는 방식이다.
인터프리터처럼 한 줄씩 실행하지 않고, 중간 코드를 실행 도중에 기계어로 바꾸는 기술이다.
동작흐름
- 개발자가 소스코드를 작성
- 인터프리트 or VM이 중간 코드로 변환
- JIT 컴파일러가 런타임에 중간 코드를 기계어로 변환
- CPU가 빠르게 실행
장점
- 인터프리터보다 빠르다
인터프리터는 한 줄씩 읽고 해석하는 반면, JIT는 실행 중에 기계어로 번역해놓고 실행하므로 훨씬 빠르다. - 컴파일러보다 유연하다
컴파일러: 실행 전에 전체를 번역하고, 실행 파일을 생성하므로 이식성이 떨어진다.
JIT: 실행 중에 번역하므로 여전히 이식성이 유지된다. - 최적화가 가능하다
JIT은 실행 시점에 코드를 보면서 자주 실행되는 부분을 최적화할 수 있다.
단점
- 런타임 시점에 컴파일을 실행하므로, 처음 실행할 때 약간의 지연이 발생할 수 있다.
- 실행 환경에 JIT 컴파일러가 필요하다.
'CS' 카테고리의 다른 글
| [CS] 타입스크립트의 컴파일 과정 (0) | 2025.09.21 |
|---|---|
| [CS] Unix와 Linux (0) | 2025.07.20 |
| [CS] Git이란, (+ Gist) (0) | 2025.07.15 |
| [CS] 스택(Stack), 큐(Queue), 덱(Deque) (0) | 2025.07.08 |