Open2

FlutterがDebugビルドだとパフォーマンスが落ちる理由

Santa TakahashiSanta Takahashi

先ず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

Santa TakahashiSanta Takahashi

これを踏まえて、「FlutterはDebugモードだとパフォーマンスが悪くて、それはJITのせいである」みたいなのが定説だと思っていたのだが、実態はそこまでシンプルではないらしい

Dartのコンパイラ開発をリードしている方の発言によると、
FlutterのDebugモードで遅延が生じるのはJITが原因というのは語弊があって、Flutterのソースコードに大量に仕込まれているassertionなども大きく影響しているらしい。