Kitkatのドロイドくん

Android4.4より、新たな試みとしてランタイムに従来の”dalvik”の他に”art”というものが加わりました。

なんでもAndroid4.4ではランタイムを”dalvik”から”art”に変更すると、端末の動作がより高速になるとの事。

SPONSORED LINK

ランタイム?dalvik?art?それ食べられるの?

なんか”dalvik”と”art”という言葉に目がいきがちですが、そもそもランタイムってなんなのさ?って思いましてググってみました。

ランタイムとはデータベースソフトなど、アプリケーションの開発と実行の両機能を持つソフトから、開発機能だけを取り除いた実行専用プログラム。また開発ツールで開発したアプリケーションを実行するためのファイル群も、同様に呼ぶ。

そうすけには「はて、何のこっちゃ?」という感じです。もしかしたら”dalvik”と”art”についても調べてみたらもっと分かり易いかも、と思いこちらもググってみました。

“dalvik”はコードをコンパイルしてAndroidアプリを動作させるためのバーチャル・マシンである。通常AndroidアプリはJavaというプログラミング言語で書かれており、バイトコードにコンパイルされて各デベロッパーからGoogle Playのようなアプリストアに提出される。その後、バイトコードはJavaバーチャル・マシン用のファイルからDalvikが実行可能なファイル形式へと変換されるのだ。

何かイマイチ理解できていないのですが、ようは”dalvik”はユーザーがアプリを1回1回起動するたびにアプリのプログラムをコンパイルして立ち上げる、的な動作をしているようです。例えるなら、注文を受けてはじめて一から料理を作り始めるような感じでしょうか。

“art”はアプリがデバイスにダウンロードされた時点でバイトコードをマシンコードに変換するバーチャルマシン。動作としてはWebブラウザがWebサイトを素早くロードできるよう、予めキャッシュしておくのと似たような働きをする。すなわちアプリをインストールした時点で予めすぐ起動できる状態にしておく(ような感じ?)のだ。バイトコードから変換されて作成されたマシンコードはデバイスの記憶装置をより多く必要とするが、アプリの起動は早くなり、動作もスムーズになる。

一方”art”はアプリをインストールした時点で予めコンパイルしちゃうぞってことでしょうか。例えるなら、注文を受ける前からある程度料理を作り始めておいて、注文がきたらすぐ出せる、的な。

とりあえず”dalvik”と”art”の違いは何となく分かりましたが、ランタイムの意味がイマイチ理解できませんでした(笑)

ランタイムを”art”にすると端末の動作が速くなる?

一般的(ネットでググった範囲)には、ランタイムを”art”に変更すると「動作が快適になった」とか「ベンチマークスコア」が上がったなんて書かれている方が非常に多いんですよね。で、そうすけもNexus5で実際ベンチマークスコアを測って試してみました。

まずはQuadrant Advancedを用いて。こちらが”dalvik”でのスコア。

quadrantで測定したdalvikのベンチマークスコア

そしてこちらが”art”でのスコア。

quadrantで測定したartのベンチマークスコア

結構スコアが上がっています。

続いてAnTuTu Benchmarkを用いて。“dalvik”のスコアがこれ。

antutuで測定したdalvikのベンチマークスコア

そして”art”のスコアがこれ。

antutuで測定したartのベンチマークスコア

こっちは若干下がっています。こうやってみてみると、一概に数値が向上するわけではないようですね。

そうすけは思った

ベンチマークスコアから見ると動作が高速化するのかなんとも言えませんが、あくまでベンチマークスコアは目安だと考えると、多少の誤差は仕方がないのかなぁ。あとは使ってみて実際に高速化が実感できれば一番良いのですが、今のところそんなこともないですしおすし。

まあしばらくこのまま使ってみようとは思います。