dart 는 두 개의 컴파일러를 가지고 있다(JIT, AOT)
AOT 컴파일러 (Ahead-of-time)
네이티브(arm, x86, x64), 웹(js)
시스템에 맞게 최적화된 바이너리를 생성하므로 컴파일에 많은 시간이 걸린다.
최종 배포시 사용.JIT 컴파일러
dart VM 사용
코드의 결과를 바로 보여준다. (ms 단위?)
가상머신에서 동작중이라 조금 느리지만 많은 디버깅 옵션도 지원.
개발중에만 사용하며 배포에는 사용하지 않음.null safety 특성을 가진다.
c나 java에서 null 참조하면 오류 발생.flutter, dart 둘 다 google 에서 개발 한 것이다 즉 flutter 의 성능 향상을 위해 dart 를 변경 하는 것도 가능하다.
flutter 가 처음 나왔을 때 AOT 컴파일러 는 없었다. flutter 팀의 요청에 의해 dart 팀에서 개발 한 것.
AOT 컴파일이란?
- 코드 실행 전 미리 컴파일하는 방식을 의미한다. 즉, 소스 코드를 실행하기 전에 기계어로 변환하여 성능을 높이는 방식
- Flutter에서 AOT 컴파일
- 앱이 배포되기 전 모든 코드를 기계어로 변환해서 실행속도가 매우 빠름 Flutter가 안드로이드와 iOS같은 모바일 앱에서 네이티브 성능을 발휘할 수 있는 이유이기도 함.
JIT 컴파일
- 프로그램을 실행할 때 필요한 코드만 그때그때 실시간으로 컴파일하는 방식
- Flutter에서는 Hot Reload 기능에 해당
네이티브 성능
- 앱이 기지에 맞춰 최적화되어 마치 그 기기용으로 직접 작성된 것처럼 작동하는 것을 의미함. 즉, 빠르고 부드러운 실행이 가능해져서 사용자가 앱을 사용할 때 딜레이나 끊김 없이 자연스러운 경험을 할 수 있음.
'개발자 > SupaBase && Flutter' 카테고리의 다른 글
06. (Dart 개념_노마드코더 강의)설계도에 빗댄 Dart 개념 총정리 (2) | 2024.10.23 |
---|---|
05. (Dart 개념_노마드코더 강의)Classes (0) | 2024.10.23 |
04.(Dart 개념_노마드코더 강의) Functions (2) | 2024.10.23 |
03. (Dart 개념_노마드코더 강의) Data Type (1) | 2024.10.23 |
02. (Dart 개념_노마드코더 강의) Variables (1) | 2024.10.23 |