web-dev-qa-db-ja.com

DVMとARTの違いは何ですか? LollipopでDVMが正式にARTに置き換えられたのはなぜですか?

Android Lollipop、ARTはDVMよりも高速であるため、GoogleはDVMをARTに置き換えました。他の理由はありますか?

34
Amit Prajapati

いくつかの主要なARTがもたらすパフォーマンスの改善があり、それらはDalvikには欠けていました。しかし、すべての長所には短所もあります。ここで、長所と短所の両方について説明します。


1)編集アプローチ

これは、Dalvikに対するARTの最大の利点です。 老人のDalvikはJust-In-Time(JIT)アプローチを使用しましたオンデマンドでコンパイルが行われました。すべてのdexファイルは、必要な場合にのみ、それぞれのネイティブ表現に変換されました。

ただし、ARTはAhead-Of-Time(AOT)アプローチを使用で、dexファイルは要求される前にコンパイルされました。これ自体が、あらゆるAndroidデバイスのパフォーマンスとバッテリー寿命を大幅に改善します。

たとえば

Dalvikの場合、アプリのアイコンをタップして開くと、必要なdexファイルが同等のネイティブコードに変換されます。このコンパイルが完了すると、アプリは動作を開始します。そのため、これが完了するまでアプリは応答しません。

さらに、このプロセスは、CPUサイクルと貴重なバッテリージュースを浪費するアプリを開くたびに繰り返されます。

しかし、ARTの場合、アプリをインストールするたびに、すべてのdexファイルが一度だけ変換されます。そのため、インストールには時間がかかり、アプリはDalvikよりも多くのスペースを必要としますただし、パフォーマンスが大幅に向上し、バッテリー寿命が大幅に節約されます


2)起動時間

Dalvikの場合、キャッシュはデバイスの実行時に構築され、JITアプローチで示されているようにアプリが使用されます。 したがって、起動時間は非常に高速です。

ただし、ARTの場合、キャッシュは最初のブート中に構築されるため、ARTの場合はブート時間がかなり長くなります。起動時に「アプリの最適化」ダイアログボックスが表示される場合があります。


3)スペース使用量

ARTで実行されているアプリが使用するスペースは、Dalvikのスペースよりもはるかに大きいです。 Dalvikの20 MBアプリのように、ARTでは35 MB以上かかります。

低記憶装置を使用している場合、これは大きな不利益になる可能性があります.


4)ARTはいまいましい

上記で説明したように、ARTは非常に高速でスムーズです。アプリは非常に機敏で応答性に優れています。 DalvikとARTを比較すると、確実にARTデバイスが大幅に勝ちます。

[〜#〜] art [〜#〜]はすべての答えですiOSはAndroidよりも高速でスムーズであり、バッテリー効率も高いと主張した人々。

83
Aritra Roy

Android Lolipop、DVMはARTに置き換えられました。DVMは特定のアプリを起動するたびにバイトコードを変換するためです。しかし、ARTはアプリのインストール時に一度だけ変換します。 ARMはアーキテクチャです。MIPSやx86などのように、DVM/ARTはARM上で実行されます。両方とも互いに置き換えることはできません。これで混乱が解消されることを願っています。

2
kazisami

Android 4.4 KitKat、GoogleはAndroidオペレーティングシステム上でアプリを実行する新しい方法を導入することにしました。この新しいランタイム([〜#〜] art [〜#〜]

ARTは、GoogleのAndroidデバイスのパフォーマンスを向上させることを目的とした、2年間にわたる進行中の秘密プロジェクトです。

Android L(5.0)ARTがデフォルトのランタイムとして作成されました(ARTはDalvikを完全に置き換えました)。

ART(Android RunTime)は、Dalvikの次のバージョンです。 Dalvikはランタイム、バイトコード、およびVM Android実行用システムAndroidアプリケーション。

DalvikはJIT(ジャストインタイム)コンパイルに基づいています。つまり、アプリを実行するたびに、その実行に必要なコードの一部がその時点でマシンコードに変換(コンパイル)されます。アプリを実行すると、追加のコードがコンパイルされてキャッシュされるため、アプリの実行中にシステムがコードを再利用できます。 JITはコードの一部のみをコンパイルするため、メモリフットプリントが小さくなり、デバイス上の物理スペースが少なくなります。

ART vs Dalvik/AOT vs JIT

Dalvikに対するARTの利点:

  1. ARTの場合、実行時に何もコンパイルされないため、アプリの起動速度は驚くほど高速です。
  2. Odexed ROM in dalvikの場合のように、dalvikパーティションから何も実行されないため、ブート速度はdalvikよりも高速です。
  3. アプリの実行に関するコンパイル作業がないため、CPUの作業が減り、バッテリーバックアップが増加します。
  4. 改善されたガベージコレクション(GC)
  5. そして最後に、開発者のほとんどは、デキステッドROMがデオデックスROMよりも高速であるのではないかと心配しています。 ARTの場合、ROMがデデックスであるかデオデックスであるかは関係ありません。アプリのインストール時に完全なコードを機械語にコンパイルします。

ARTの欠点

  1. ARTはインストール時にアプリをプリコンパイルするため、インストール時にdalvikよりも10〜20%多くのスペースが必要です。
  2. Dexバイトコードはインストール時にネイティブマシンコードに変換されるため、インストールに時間がかかります。

大規模プロジェクトの1つであるNexus 4のインストール時間は、〜17 sから〜25 sにジャンプしました。

Dalvik対ARTベンチマーク結果(Android 4.4):Linpack

シングルスレッド--->Dalvik(135)--->ART(149)--->10.93%

マルチスレッド--->Dalvik(336)--->ART(383)--->13.82%

1
Dhaval Jivani

Android 4.4以降のバージョンでは、Dalvikとともに、Googleは「ART」と呼ばれる新しいAndroidランタイムを導入しました。

ARTとDalvikの違い

ART(Android RunTime)の主な機能はAhead-of-Time(AOT)コンパイルです。

AOT vs JIT

Androidアプリの形式は.apkであり、すべてのJavaクラスはDEXバイトコードに変換されます。 DEXバイトコード形式はデバイスアーキテクチャに依存しないため、デバイスで実行するにはネイティブマシンコードに変換する必要があります。これは、ARTランタイムとDalvikランタイムの両方で同じです。

主な違いは、ART(Android RunTime)はAhead-of-Time(AOT)コンパイルを使用し、DalvikはJust-in-Time(JIT)コンパイルを使用していることです。

Dalvikでは、アプリを実行するたびにジャストインタイム(JIT)コンパイルが行われ、dexバイトコードをマシンコードに変換してキャッシュします。

詳細はこちらをご覧ください http://androidboost.over-blog.com/2016/10/art-vs-dalvik.html

0
Kamal Kakkar

ART vs DVMの詳細をカバーする投稿です。 https://ayusch.com/art-vs-dvm-in-Android/

stackvsregisterベースのアーキテクチャ(DVMはレジスタベース)、また、AOTコンパイルが事前に実行されるコードをコンパイルすることでARTをDVMよりもはるかに高速化した方法。

0
Ayusch