Open2
FlutterがDebugビルドだとパフォーマンスが落ちる理由
先ずDartのコンパイルの方法がJIT(Just in Time)とAOT(Ahead Of Time)モードに分かれている。
Debugビルドで使用されているJITはプログラムが実行される毎にソースコードをコンパイルするので
- 直ぐにビルドできる
- Hot Reloadが実現可能
- AOTと比べてパフォーマンスが不安定
Releaseビルドで使用されているAOTはプログラム実行前にコンパイルするので
- ビルドに時間がかかる
- Hot Reloadは実現不可
- JITと比べてパフォーマンスは安定している
参考:
Flutter Dart VMの動作モード
How does JIT and AOT work in Dart?
Dart Overview
これを踏まえて、「FlutterはDebugモードだとパフォーマンスが悪くて、それはJITのせいである」みたいなのが定説だと思っていたのだが、実態はそこまでシンプルではないらしい
Dartのコンパイラ開発をリードしている方の発言によると、
FlutterのDebugモードで遅延が生じるのはJITが原因というのは語弊があって、Flutterのソースコードに大量に仕込まれているassertionなども大きく影響しているらしい。