KitKat で切り替えることが可能になりました。
Javaで書かれたコードがLinuxKernelと接する実行部分が「ランタイム」。
そんな「ART」てどんな特徴があるのか。
'ART' experiment in Android KitKat improves battery life and speeds up apps
Dalvik’s future replacement debuts in Android 4.4 KitKat
まとめると以下。
・仮想マシン「Dalvik」の代替。
・高速
・2年前より開発
・バッテリーの寿命向上
・AOT(Ahead-Of-Time)コンパイラ
・Dalvik は、JIT(Just-In-Time)コンパイラ
で、それぞれ、「実行時」と「事前」の違い。
実行時コンパイラ(Just-In-Time Compiler、JITコンパイラ、その都度のコンパイラ)とは、ソフトウェアの実行時にコードのコンパイルを行い実行速度の向上を図るコンパイラのこと。実行中に中間言語コードをネイティブの機械語コードにコンパイルするもの。
事前コンパイラ (Ahead-Of-Timeコンパイラ、AOTコンパイラ)とは、アプリケーション実行前に事前にコンパイルするコンパイラのこと。実行時のコンパイルの必要を無くし、ソースコードから中間言語コードを生成した後に、ネイティブの機械語コードも生成してしまう方式。
KitKat上では、有効化した「開発者向けオプション」から「ランタイムを選択」で切り替えできる。
「ART」選択すると、再起動を促される。
再起動直後に、インストールしているすべてのアプリが「事前」に最適化される。
200個のアプリで20分くらいかかった。これのことか「事前コンパイル」。
アプリを起動してみると、速くなったのような気もするし、そうでもないような気もする。
比較動画がありました。
これも差がよく分かりませんw
こんな記事もあるけど、
Nexus 5(Android 4.4 KitKat)ではベンチマークスコアを50%アップ可能、ランタイム「ART」の実力 CPUスコアは2倍 | アプリオ
いくつかのベンチマークアプリで計測してみたけど微妙だった、速くなってるかどうかは。
現状のARTはAOTのしくみを入れただけというレベルで、コンパイルの最適化もJavaVMの実行環境としての最適化もまだ入っていません。
Android 4.4 のARTのコンパイルしたコードを見た感想 - 組み込みの人。
新しいAndroidのランタイム「ART」でアプリの動作が快適に | ReadWrite Japan
まだ使わないほうがよさげな雰囲気に見えるけども。
Introducing ART | Android Developers