Dalvik VM vs. ART (Android Runtime): Dampak untuk pengguna akhir?

22

Dengan Nexus 5 (Android 4.4 KitKat), Google telah mengirimkan dua runtime untuk menjalankan aplikasi.

Pilih opsi Runtime di Android 4.4 KitKat Dalvik dan ART Runtimes di Android 4.4 KitKat

Apa perbedaan antara Dalvik & ART untuk pengguna akhir? Bagaimana pengguna akhir dapat dipengaruhi oleh ini? Apakah ada alasan khusus saya harus memilih runtime ART baru?

Android Quesito
sumber
3
Fakta Anda harus mengaktifkan dan mencari melalui opsi Pengembang untuk menemukan pengaturan ini harus menjadi petunjuk bahwa itu tidak dimaksudkan untuk pengguna akhir.
Dan Hulme
1
@DanHulme Poin yang bagus, tetapi masih penggemar non-pengembang bermain dengan opsi Pengembang & mereka bahkan menggunakannya untuk tujuan non-pengembangan yang positif berkali-kali.
Android Quesito
Sejauh pengalaman pengguna adalah titik Anda maka Anda hanya akan melihat bahwa daya baterai dihemat banyak, ... namun Anda tidak akan dapat melihat perbedaan kecepatan saat beralih dari Dalvik ke ART.
Rahul Raina

Jawaban:

26

Dalvik VM (Mesin Virtual) adalah versi Java Java VM (tempat aplikasi berjalan). VM membuat aplikasi terisolasi dan independen dari perangkat keras dan aplikasi lain yang sebenarnya. Tetapi, agar ini berfungsi, Dalvik perlu mengonversi apa yang disebut bytecode (dirancang untuk mesin virtual) menjadi kode mesin asli. Untuk meminimalkan penalti kinerja yang diperkenalkan oleh bytecode ke konversi kode asli, proses yang disebut kompilasi Just-In-Time (JIT) dilakukan, yang mengkonversi hot, yaitu sering digunakan, bytecode ke kode asli. 1

ART (Android Runtime) adalah pengganti Dalvik yang menggunakan kompilasi Ahead-Of-Time (AOT), artinya aplikasi Anda dikompilasi ke keadaan siap-pakai sebelum Anda bahkan meluncurkannya. Ini biasanya dilakukan, pada saat pemasangan aplikasi, membuat proses peluncuran dan menggunakannya jauh lebih cepat dan lebih lancar. Dan karena ini berarti kompilasi hanya dilakukan sekali, Anda juga dapat melihat masa pakai baterai yang lebih baik.

Jika ART lebih baik dalam perspektif kinerja & daya tahan baterai, haruskah saya mulai menggunakannya?

Tidak. Jika Anda melakukannya, Anda dapat merusak aplikasi pihak ketiga. Google telah mengirimkan pratinjau ART ini dengan Android 4.4 untuk pengembang untuk menguji aplikasi mereka di atasnya.

Catatan Sisi: Pendekatan Google dengan ART adalah untuk mengalahkan iOS (aplikasi iOS asli sehingga berkinerja lebih baik bahkan pada spesifikasi perangkat keras kelas atas), tapi saya tidak tahu kemana arahnya ... Fragmentasi lain? Lihat OEM bebas membuat perangkat menggunakan salah satu atau keduanya . Sementara versi final seharusnya tidak mempengaruhi sebagian besar aplikasi, tetapi ini bukan 100% cross-platform.

1 Perhatikan bahwa JIT ditambahkan ke Dalvik di Android 2.2

Android Quesito
sumber
3
Mungkin ada dua fakta yang perlu diperhatikan: AOT ART menghasilkan aplikasi menggunakan 20,25% lebih banyak penyimpanan dibandingkan dengan DEX. Tes Plus pada Nexus-5 yang saya baca tidak menunjukkan perbedaan dalam kecepatan subjektif atau daya tahan baterai. Keduanya pasti akan membaik, mengingat ART di KitKat hanya menjadi pratinjau pengembang dan pemeriksaan kompatibilitas (yang mis. WhatsApp gagal). Jadi saya kedua kesimpulan Sachin: Ini belum baik untuk pengguna akhir.
Izzy
2
Jawaban yang sangat bagus. Saya mengambil kebebasan untuk memperbaikinya sedikit. Tetapi saya tidak setuju dengan paragraf terakhir: ART tidak meningkatkan fragmentasi: Jika ART dianggap siap produksi, tidak masalah jika Aplikasi Anda dijalankan oleh Dalvik atau ART, keduanya menggunakan format .dex yang sama sebagai titik awal. Hanya ART yang AOT mengkompilasi .dex ke kode asli.
Aliran