Just In Time(즉시) 컴파일 이란?
말 그대로임 프로그램 실행시점에서 기계어로 즉석으로 변환하는 기술
작동 원리 : 소스 코드 작성 → 실행 중 JIT 컴파일러가 기계어로 변환 → 기계어 → 실행
장점 :
실행 중 최적화로 성능 향상
플랫폼 독립성 유지 가능
단점 :
초기 실행 속도 느림(처음 변환 과정 필요)
추가적인 메모리 사용(기계어 캐시 저장)
Ahead Of Time(미리) 컴파일 이란?
말 그대로임 프로그램 실행 하기전에 소스코드를 기계어로 미리 컴파일 하는 기술
작동 원리 : 소스코드 작성 → AOT 컴파일러가 코드를 기계어로 직접 변환(.exe,.out 등 파일생성) → 이미 변환된 기계어를 실행
장점:
빠른 초기 실행 속도(이미 기계어니 즉시 실행가능)
낮은 런타임 오버헤드(실행 시 추가적 컴파일 과정없음)
단점:
유연성 부족(실행 환경에 따른 최적화 불가능)
플랫폼 종속성(플랫폼 달라지면 다시 컴파일 해야함)
| 비교 항목 | AOT (Ahead-Of-Time) | JIT (Just-In-Time) |
|---|---|---|
| 컴파일 시점 | 실행 전에 미리 컴파일 | 실행 중에 실시간 컴파일 |
| 실행 속도 | 초기부터 빠름 | 처음에는 느릴 수 있지만 점점 최적화됨 |
| 최적화 방식 | 고정된 최적화 | 실행 데이터를 기반으로 동적 최적화 가능 |
| 플랫폼 이식성 | 플랫폼 종속적 | 플랫폼 독립적 (JVM, .NET 같은 VM 기반) |
| 대표 언어 | C, C++, Go, Rust | Java, C#, WebAssembly, Kotlin |