[CS] 컴파일러와 인터프리터, JIT

2025. 9. 21. 18:08·CS

 

더보기

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

 

 

컴파일러 (Compiler)

ex. C, C++

장점

  • 컴파일이 완료된 실행 파일은 컴퓨터에서 빠르게 실행할 수 있어 효율적이다.
  • 기계어로 번역되기 때문에 프로그램 코드가 유출되지 않는다.
  • 컴파일 에러와 관련된 에러를 초기에 발견할 수 있다.

단점

  • 코드를 수정하면 컴파일을 다시 수행해야 한다.
  • 소스 파일 전체를 컴파일 해야하므로 용량이 크다. 즉, 수정사항이 빈번이 발생할 경우 문제가 발생할 수 있다.
  • 모든 소스 파일을 한 번에 번역하므로 컴파일 시간은 느릴 수 있다.

 

인터프리터 (Interpreter)

ex. Python, JavaScript

장점

  • 시스템 간의 이식성이 뛰어나다.
    → 실행환경만 있으면 소스코드를 수행하지 않고도 다양한 OS에서 실행할 수 있다.
  • 코드를 수정하면 필요한 부분만 다시 번역하므로 코드 수정에 용이하다.

단점

  • 매번 한 줄 마다 번역과정을 거치므로 프로그램 실행 속도가 느릴 수 있다.
  • 중간 코드로 해석되어 프로그램 코드가 유출될 수 있다.

 


JIT (Just In Time)

필요한 순간에 컴파일을 실행하는 방식이다.

인터프리터처럼 한 줄씩 실행하지 않고, 중간 코드를 실행 도중에 기계어로 바꾸는 기술이다.

 

동작흐름

  1. 개발자가 소스코드를 작성
  2. 인터프리트 or VM이 중간 코드로 변환
  3. JIT 컴파일러가 런타임에 중간 코드를 기계어로 변환
  4. 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
'CS' 카테고리의 다른 글
  • [CS] 타입스크립트의 컴파일 과정
  • [CS] Unix와 Linux
  • [CS] Git이란, (+ Gist)
  • [CS] 스택(Stack), 큐(Queue), 덱(Deque)
zooyaa
zooyaa
  • zooyaa
    성장 중!
    zooyaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • Algorithm (4)
      • CS (5)
      • Projects (0)
      • Web (1)
      • 경험들 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
zooyaa
[CS] 컴파일러와 인터프리터, JIT
상단으로

티스토리툴바