컴파일러 vs 인터프리터 vs JIT 컴파일러

김세빈·2025년 4월 10일

CS

목록 보기
9/22

컴파일러 vs 인터프리터 vs JIT 컴파일러 쉽게 이해하기

개발을 하면서 한 번쯤은 들어봤을 컴파일러, 인터프리터, 그리고 JIT 컴파일러.

"이게 뭐가 다르지?", "왜 언어마다 방식이 다른 거야?"
처음엔 헷갈릴 수 있지만, 이 개념들을 이해하면 프로그래밍 언어의 동작 원리를 더 깊이 이해할 수 있습니다.


1. 기계어로 번역하는 이유

우리가 작성하는 코드는 사람이 읽기 쉬운 고수준 언어입니다. 하지만 컴퓨터는 0과 1로 이루어진 기계어만 이해할 수 있습니다.

그래서 우리가 작성한 코드를 기계어로 번역해주는 과정이 필요한데,
그 역할을 하는 것이 바로 컴파일러, 인터프리터, 그리고 JIT 컴파일러입니다.


2. 컴파일러란?

컴파일러전체 소스코드를 한 번에 읽어서 기계어로 변환하는 프로그램입니다.

📌 특징

  • 전체 코드를 먼저 분석하고 기계어로 변환
  • 변환된 파일은 실행 파일(.exe, .out 등) 로 저장됨
  • 실행 속도는 빠름, 실행 전 컴파일 시간이 걸림

🛠 예시 언어

  • C, C++, Go 등

3. 인터프리터란?

인터프리터코드를 한 줄씩 읽고 바로 실행하는 방식입니다.

📌 특징

  • 한 줄씩 해석하고 즉시 실행
  • 컴파일 과정이 없기 때문에 시작은 빠름
  • 전체적으로 보면 실행 속도는 느릴 수 있음

🛠 예시 언어

  • Python, Ruby, JavaScript(초기), PHP 등

4. JIT(Just-In-Time) 컴파일러란?

JIT 컴파일러인터프리터와 컴파일러의 중간 형태입니다.
실행 시점에 코드를 분석하고, 자주 사용되는 부분만 선별적으로 컴파일해서 성능을 향상시킵니다.

📌 특징

  • 실행하면서 코드를 분석함 (→ 동적 분석)
  • 자주 실행되는 코드만 선택해서 기계어로 변환 (→ 동적 컴파일)
  • 변환된 코드는 최적화된 기계어로 빠르게 실행

💡 성능 최적화

  • 컴파일러의 최적화 기법을 적용해 실행 중 성능을 끌어올림

🛠 예시 엔진

  • JVM (Java Virtual Machine)
  • V8 (JavaScript 엔진 - Chrome)

5. 요약 비교

구분컴파일러인터프리터JIT 컴파일러
실행 시점실행 전 컴파일실행 중 해석실행 중 컴파일
처리 방식전체 코드 분석한 줄씩 해석분석 후 일부 컴파일
실행 속도빠름느림중간 ~ 빠름
예시 언어/엔진C++, GoPython, RubyJava(JVM), JS(V8)
생성물실행 파일없음캐시된 기계어 코드

0개의 댓글