Interpreter, Compile
2025. 7. 9. 01:35ㆍ기타
컴퓨터는 오직 0과 1로 이루어진 기계어만 이해할 수 있기 때문에 우리가 작성한 코드를 이해할 수 없습니다.
그래서 작성한 코드를 실행시키기 위해서 기계어로 번역하는 과정이 필요합니다.
이 글에서는 어떻게 코드를 기계어로 번역하고 실행하는지 알아보겠습니다.
프로그램 실행의 두 가지 방식
코드를 기계어로 번역하는 방식은 두 가지가 존재합니다.
- 컴파일(Compile): 코드를 먼저 기계어로 번역한 뒤 실행 (중간 목적 파일이 존재)
- 인터프리터(Interpreter): 코드를 읽으면서 동시에 실행
위의 두 가지 방식이 가장 기본적인 방식입니다.
인터프리터 (Interpreter)
장점
- 별도의 변환과정 없이 코드를 바로 실행 가능
- 별도의 실행파일이 생기지 않기 때문에 메모리 절약 가능
- 바로 결과를 확인할 수 있기 때문에 코드 수정 및 디버깅이 간단
- 시스템 간의 이식성이 뛰어남
단점
- 매번 코드를 해석하며 실행하기 때문에 성능이 떨어짐
- 반복되는 코드도 모두 해석해서 실행
컴파일 (Compile)
장점
- 이미 기계어로 변환되어 있기 때문에 실행이 빠름
- 컴파일 시점에 코드 전체를 분석해 최적화 가능
단점
- 코드를 수정 할 때마다 다시 컴파일해야 하므로 개발 과정이 느려질 수 있음
- 플랫폼에 의존적이여서 운영체재별로 각각 따로 컴파일해야 함
컴파일의 2가지 방식
- AOT (Ahead-Of-Time): 프로그램을 실행하기 전에 미리 모든 코드를 기계어로 변환해 두는 방식
- JIT (Just-In-TIme): 프로그램이 실행되는 중에 필요한 부분을 그때그때 기계어로 변환하는 방식
처음에는 인터프리터처럼 동작하다가 자주 사용되는 코드(핫스팟)가 발견되면 그 부분을 기계어로 컴파일해서 저장해둠.
AOT (Ahead-Of-Time)
장점
- 이미 기계어로 모두 변환되어 있어 실행이 매우 빠름
- 컴파일 시점에 코드 전체를 분석해 최적화할 수 있음
단점
- 컴파일 시간이 필요
- 플랫폼에 의존적
JIT (Just-In-TIme)
장점
- 실제 실행 패턴을 보고 자주 쓰이는 부분을 최적화
- AOT처럼 모든 것을 미리 컴파일하지 않으므로 시작 속도가 빠름
단점
- 처음 실행 시 컴파일 과정이 포함될 수 있어 느릴 수 있음
- 실행 상황에 따라서 성능이 달라지기 때문에 성능 예측이 어려움
'기타' 카테고리의 다른 글
| 바이브 코딩 체험기 (1) | 2025.09.25 |
|---|---|
| Spring Securiy ROLE_ 에러 (0) | 2025.01.07 |
| 컴퓨터가 문자를 인식하는 방법 (ASCII, 유니코드) (0) | 2024.08.24 |
| SEO, 검색 엔진 최적화 (0) | 2024.06.20 |
| 해시 (0) | 2024.04.11 |