본문 바로가기
Flutter

JIT vs AOT

by 코코형아 2023. 4. 3.

Just-in-Time(JIT) 컴파일과 Ahead-of-Time(AOT) 컴파일은 모두 프로그래밍 언어 코드를 실행 가능한 바이너리 코드로 변환하는 컴파일러 기술입니다.

그러나 둘 사이에는 중요한 차이점이 있습니다.

 

 

JIT 컴파일은 프로그램이 실행되는 동안 코드를 컴파일합니다. JIT 컴파일러는 프로그램의 코드를 실행할 때, 그 코드를 분석하고, 최적화하고, 기계어 코드로 변환합니다. JIT 컴파일은 프로그램이 시작될 때 코드 실행을 늦추는 오버헤드가 있지만, 프로그램 실행 중에 최적화를 수행할 수 있어 전반적인 성능을 향상시킬 수 있습니다. JIT 컴파일러가 지원되는 언어로는 Java, JavaScript 등이 있습니다.

 

반면, AOT 컴파일은 프로그램이 실행되기 전에 코드를 컴파일합니다. 컴파일러는 소스 코드를 기계어 코드로 변환한 후 실행 가능한 바이너리 파일을 생성합니다. 이러한 방식은 프로그램이 시작될 때의 초기 부하가 적고, 실행 속도가 빠릅니다. 그러나 프로그램이 실행되는 도중에 코드 최적화를 수행할 수 없기 때문에, 실행 시간에 따라 최적화가 어려울 수 있습니다. 대표적인 AOT 컴파일러로는 C++, Rust, Dart 등이 있습니다.

 

 

따라서, JIT 컴파일은 프로그램 실행 시간에 최적화를 수행할 수 있어, 실행 시간 성능을 향상시키는 장점이 있습니다. 반면 AOT 컴파일은 프로그램 시작 시간의 지연을 줄일 수 있고, 실행 시간에 최적화가 필요하지 않아서 전체적으로 안정적인 실행 성능을 보장할 수 있습니다.

 

 

Flutter에서 사용하는 Dart언어의 경우, 개발중에는 JIT 컴파일을 사용하여 개발자로 하여금 real-time으로 코드의 변경점을 확인할 수 있게 하고,

생산 단계에서는 AOT 컴파일을 지원해 타겟 플랫폼에 직접적으로 실행될 수 있고 이로 인해 faster startup times, better performance, smaller binary size의 결과를 가져옵니다.

'Flutter' 카테고리의 다른 글

여러가지 위젯(Widget)  (0) 2023.06.12
BuildContext 이해하기  (0) 2023.06.02
Appbar(앱 바) & Drawer(드로어)  (0) 2023.06.01
vscode 오류 해결  (0) 2023.05.23