본문 바로가기
IT 정보/용어

AOT란? 실행 속도를 높이는 핵심 기술 실행 전 컴파일

by 희품 2025. 4. 27.
반응형

AOT란? 실행 속도를 높이는 핵심 기술 사전 컴파일

프로그래밍에서 성능 최적화는 언제나 중요한 과제다.
특히 웹, 모바일, 게임 등 사용자 반응 속도가 중요한 환경에서는 코드를 얼마나 빠르게 실행할 수 있는지가 핵심이다. 이러한 요구에 대응하기 위한 기술 중 하나가 바로 AOT(사전 컴파일, Ahead-of-Time Compilation)이다.
AOT가 구체적으로 무엇인지, 어떻게 동작하는지 살펴보자.

 

AOT란?

IoT 아니고, AOT다.

사람이 키보드를 통해 코딩하는 모습

AOT는 코드를 실행하기 전에 미리 기계어로 변환(컴파일)하는 방식이다.

즉, 프로그램이 실행되기 전에 모든 코드가 이미 네이티브 코드로 변환되어 있기 때문에, 실행 시점에서는 컴파일 과정 없이 바로 실행할 수 있다.

 

사실 AOT의 약자를 알면, AOT가 무슨 뜻인지 알기 쉽다. AOT는 'Ahead-of-Time'이라는 뜻으로, 이름 그대로, 실행 전에 컴파일을 완료한다는 의미를 가진다.

 

AOT가 사용되는 사례

컴파일 언어의 예시를 보여주는 이미지

사실 대부분의 컴파일 언어(C언어, C++, Rust 등)는 전통적으로 AOT 방식을 사용한다. 소스 코드를 바이너리 실행 파일로 완전히 컴파일해 배포하는 형태이기 때문이다. 하지만 최근에는 AOT 개념이 JAVA 같은 JVM 기반 언어나 JavaScript 프레임워크와 같은 환경에서도 선택 가능한 전략 중 하나로 떠오르고 있다.

 

전통적인 컴파일 언어 외에 사용하는 몇 가지 AOT 사례를 살펴보자.

Angular 프레임워크를 시각적으로 표현

1. Angular (프론트엔드 프레임워크)

Angular에서는 AOT 컴파일러를 사용하여 템플릿을 사전에 HTML과 TypeScript에서 자바스크립트 코드로 변환한다. 이로 인해 초기 렌더링 속도가 빨라지고, 실행 중 템플릿 오류를 사전에 잡을 수 있다.

2. GraalVM Native Image

Java 애플리케이션을 AOT 방식으로 네이티브 실행 파일로 만들어 실행 속도와 메모리 효율을 극대화할 수 있다.

3. iOS 앱 개발

iOS에서는 AOT 방식을 기본으로 사용해 앱을 빌드 시 네이티브 코드로 컴파일하여 성능을 최적화한다.

 

 

AOT의 장점과 단점

AOT의 장점은 속도가 빠르다는 장점과 코드가 보호된다는 장점이 있다.

RunTime을 감각적으로 표현

  • 빠른 초기 실행 속도: 실행 전에 컴파일이 완료되어 대기 시간이 줄어듦
  • 안정성 증가: 실행 중 컴파일 오류 발생 가능성 제거
  • 코드 보호: 소스 코드나 중간 코드를 직접 노출하지 않음

반면, 단점도 있는데, 단점의 핵심은, 유지보수 불편함이 가장 크다.

유지보수와 관련된 코딩하는 모습

  • 컴파일 시간 증가: 사전 컴파일 과정이 길어질 수 있음
  • 최적화 유연성 부족: 실행 시 수집한 정보 기반 최적화가 불가능함
  • 빌드 크기 증가 가능성: 모든 코드가 컴파일되어 포함되므로 용량이 커질 수 있음

AOT는 실행 전 코드를 미리 기계어로 변환해 성능을 높이는 중요한 컴파일 기술이다. 기존의 컴파일 언어는 물론, 런타임 기반 언어에서도 AOT 방식은 점점 더 주목받고 있다.

반면 AOT와 반대 의미로, 실행 시 컴파일이라는 뜻의 JIT가 있다. AOT는 JIT와 비교해 빠른 시작과 안정성이 강점이지만, 런타임 최적화 측면에서는 제한이 있다.

여러 프로그래밍 언어를 경각심을 느끼게 하는 이미지

상황에 따라 AOT와 JIT을 병행하거나 선택적으로 사용하는 전략이 필요하며, 특히 모바일, 내장 시스템, 빠른 응답이 필요한 애플리케이션에서는 AOT가 매우 효과적인 선택이 될 수 있다.

궁금하신 내용은 댓글 남겨주세요. 꼬리말 이미지.

#AOT #AheadOfTime #JIT #컴파일러 #C언어 #Rust #Angular #GraalVM #iOS개발 #프로그래밍성능 #사전컴파일 #컴파일방식비교

 

 

 

반응형