インストール時間、メモリフットプリント、バッテリー消費、パフォーマンスを最もうまく両立させるため、Android Nはコンパイラ、インタプリタ、JITを使ったハイブリッドランタイムを導入する。
Android KitKatにプレビューとして導入され、Lollipopでデフォルトになった主要機能の一つが、ARTという(当時の)新しいランタイムだった。ARTはDalvikを置き換えたが、DEXファイルを実行しておりバイトコードに互換性があった。ARTの主たる特徴の一つは、アプリケーションインストール中のAOTコンパイルだ。その主なメリットは、高性能で低消費電力で実行できるよう最適化されたネイティブコードにあった。その一方で、欠点は容量とインストール時間にあった。LollipopとMarshmallowでは、大きなアプリケーションのインストールに何分も必要になるのだ。
Android N Developer Previewにはハイブリッドランタイムが含まれている。インストール中にコンパイルすることなく、アプリケーションは即座に起動し、バイトコードが解釈される。ARTには高速な新しいインタープリタが搭載されている。それには新しいJITがついているが、JIT情報は永続化されない。その代わり、コードは実行中にプロファイルされ、そこで得られたデータが保存される。後でデバイスがアイドル状態で充電中のとき、ARTはコードのホットセクションにプロファイルベースのコンパイルを実行する。その他の部分はそのままだ。最適化されたコードを生成するために、ARTはディープインライニングを含む複数のテクニックを用いている。
以後、アプリケーション実行中に、プロファイラが新しいホットなコードパスを見つける、あるいは、すでにコンパイルされたコードに新たな最適化を適用することで、同じアプリケーションに対して複数回コンパイルプロセスが適用される可能性がある。簡単のために、この手順は引き続きAOTと呼ばれているが、All-Of-the-Timeコンパイルと読んでも差し支えないだろう。
このAOTとインタープリタとJITをミックスした戦略には、全体として次のようなメリットがある。
- 大きなアプリケーションであっても、インストール時間が数秒に削減される
- 最適化ステップが必要ないため、システムアップデートが高速になる
- アプリケーションのRAMフットプリントが小さくなる、場合によっては50%まで下がる
- パフォーマンスの改善
- バッテリーの低消費
コンパイル中に適用される最適化について、詳しくはポッドキャスト「Episode 45: State of the ART」がオススメだ。ゲストとしてAndroid ARTチームのリーダーBrian Carlstrom氏とAndroid PlatformのエンジニアリングディレクターAnwar Ghuloum氏が登場する。
Rate this Article
- Editor Review
- Chief Editor Action