Bagaimana Ark Compiler Huawei Dapat Meningkatkan Kinerja Aplikasi Android

Huawei telah merilis rincian penting mengenai cara kerja Ark Compiler barunya, yang menjanjikan peningkatan kinerja aplikasi di Android secara drastis. Baca terus untuk mengetahui lebih lanjut

Sebagian besar perbincangan baru-baru ini seputar Huawei berkisar pada situasi politik perusahaan yang tidak menguntungkan karena a Perintah eksekutif AS yang membatasi banyak perusahaan melakukan bisnis dengan Huawei. Dampak dari keputusan penting tersebut terlalu besar untuk diabaikan. Namun dalam realitas alternatif di mana perintah eksekutif ini tidak ada, Huawei akan menjadi pusat perhatian karena hal tersebut baru-baru ini mengungkapkan Ark Compiler, inovasi terbaru yang mengklaim dapat menjembatani kesenjangan kinerja aplikasi antara Android dan iOS.

Sebelum mendalami apa itu Ark Compiler, kita perlu mengambil langkah mundur dan memahami apa itu compiler dan tujuannya dalam sistem Android.

Sejarah Singkat Kompiler dan Interpreter di Android

Kompiler adalah program komputer yang menerjemahkan kode dari satu bahasa ke bahasa lain, sering kali merupakan bahasa mesin asli. Ini kemudian dapat dijalankan secara langsung oleh komputer atau dijalankan melalui program lain (penerjemah). Terjemahan ini diperlukan karena kita menulis kode dalam bahasa pemrograman yang dapat dibaca manusia (seperti Java dan Kotlin), sedangkan komputer hanya memahami bahasa mesin asli (kode biner berupa 1 dan 0). Kompiler dengan demikian berfungsi sebagai jembatan antara instruksi yang ditulis manusia dan kemampuan mesin untuk memahami dan kemudian mengeksekusi instruksi tersebut. Seberapa cepat dan efisien konversi ini dan interpretasi selanjutnya berlangsung menentukan efisiensi kompiler memperkenalkan korelasi langsung antara efisiensi kompiler dengan kinerja dan efisiensi kode, dan lebih jauh lagi, aplikasi.

Dalvik VM

Pada masa-masa awal Android, OS menggunakan apa yang disebut Dalvik VM (penerjemah) bersama dengan kompiler JIT (just-in-time). Video lama ini dari Android Basics 101 XDA TV seri ini menyentuh Dalvik VM dan penyiapan JIT, keduanya melayani kebutuhan sistem Android awal yang memiliki keterbatasan memori yang melimpah. Dalvik VM mengambil bytecode Java dan mengubahnya menjadi kode mesin ketika kode tersebut perlu dieksekusi (karenanya Just-In-Time). Hal ini diperlukan karena ruang penyimpanan di ponsel merupakan kendala nyata pada saat itu, sehingga pendekatan ini memungkinkan aplikasi untuk bekerja dengan ukuran file yang lebih kecil di sistem.

Mengompilasi dan menafsirkan aplikasi saat runtime memiliki kelemahan yaitu performa aplikasi secara keseluruhan lebih lambat karena kompilasi akan dilakukan bersamaan saat pengguna menggunakan aplikasi.

Dalvik juga memiliki keterbatasan dalam mekanisme Pengumpulan Sampahnya. Dalvik mencatat setiap alokasi memori secara kolektif. Setelah Dalvik menentukan bahwa sebagian memori tidak lagi digunakan oleh program, Dalvik akan membebaskan memori tersebut kembali ke heap tanpa intervensi apa pun dari pemrogram. Proses ini disebut Pengumpulan Sampah (GC), dan bertujuan untuk menemukan objek memori dalam program yang tidak dapat diakses lagi dan kemudian mendapatkan kembali sumber daya yang digunakan oleh objek tersebut untuk mengosongkan memori. Sistem menentukan kapan GC diperlukan secara kolektif, sehingga pengembang aplikasi tidak dapat memilih kapan peristiwa GC terjadi [bahkan di ART]. Jadi, jika peristiwa GC terjadi di tengah aktivitas pemrosesan intensif pada aplikasi latar depan, sistem akan dijeda pelaksanaan proses dan memulai GC, sehingga meningkatkan waktu pemrosesan dan menimbulkan "jank" yang nyata pada pengguna.

Kendala ini dan kendala lainnya mendorong Google untuk mencari pendekatan alternatif untuk kinerja yang lebih cepat.

Waktu Proses Android

Dengan Android 4.4 KitKat, Google memperkenalkan SENI (Waktu Proses Android) dalam bentuk pratinjau dengan kompiler AOT (Ahead-Of-Time), dan dengan Android 5.0 Lollipop, Google menghapus Dalvik dan memilih ART sebagai satu-satunya penerjemah yang tersedia. ART dengan AOT mengubah kode menjadi bahasa mesin pada saat instalasi aplikasi, daripada menunggu untuk melakukan konversi tersebut saat aplikasi sedang digunakan. Pendekatan ini mempercepat waktu peluncuran aplikasi tetapi juga menimbulkan kelemahan dalam bentuk waktu instalasi yang lebih lambat dan peningkatan penggunaan ruang disk. Untuk menyeimbangkan semuanya, Google diadopsi kombinasi AOT, JIT, dan kompilasi yang dipandu profil dengan ART di Android 7.0 Nougat, untuk memastikan tidak ada satu faktor pun yang terpengaruh secara drastis.

Implementasi ART Android

ART juga berupaya membuat Pengumpulan Sampah tidak terlalu mengganggu. Proses GC dioptimalkan agar lebih cepat secara keseluruhan dengan jeda yang lebih sedikit (satu jeda pendek versus dua jeda Dalvik), lebih sedikit fragmentasi, dan lebih sedikit penggunaan memori. Presentasi Google di Google I/O 2014 menjelaskan secara lebih rinci keterbatasan perbaikan GC dan ART Dalvik dalam hal tersebut.

Bahkan dengan perubahan ini selama bertahun-tahun, premis dasar pendekatan Google melibatkan penafsiran kode selama eksekusi sambil memvariasikan waktu elemen kompilasi (penerjemahan). Pengumpulan Sampah juga terus menjadi masalah bagi pengembang aplikasi karena sifatnya yang bersifat interupsi dan kolektif. Bisa dibilang, kinerja aplikasi Android menurun karena masih ada biaya tambahan yang harus dikeluarkan.

Ark Compiler oleh Huawei

Huawei telah berupaya mengembangkan solusi yang lebih efisien dan karenanya mempekerjakan ratusan ahli di bidangnya. Hasil dari upaya ini adalah Ark Compiler, yang diklaim Huawei sebagai compiler statis pertama yang memungkinkan terjemahan langsung ke dalam bahasa mesin, sepenuhnya menghilangkan kebutuhan akan sebuah penerjemah. Ark Compiler juga dikembangkan dengan tujuan memaksimalkan efisiensi berjalan untuk Java dan C, sehingga secara teoritis kita akan melihat hasil terbaik dengan bahasa-bahasa ini.

Grafis oleh Huawei. Teks diterjemahkan oleh pengguna XDA MyKeyVans.

Huawei menghadirkan beberapa fitur utama Ark Compiler seperti di bawah ini:

  • Teknik kompilasi seperti AOT dan JIT dapat mengubah beberapa program menjadi kode mesin dan menjalankannya langsung di CPU, namun teknik-teknik ini tidak dapat sepenuhnya melepaskan diri dari penafsir dan keterbatasan yang menyertainya. Ark Compiler menggunakan kompilasi statis, yang memungkinkannya melepaskan diri dari penerjemah dinamis, membuka kemungkinan untuk meningkatkan kinerja aplikasi dengan "lompatan dan batas."
  • Kompilasi statis memiliki potensi kelemahan karena terlalu kaku dan tidak dapat melakukan penyesuaian yang dapat dilakukan oleh kompiler dinamis selama eksekusi. Huawei mengklaim bahwa kompilasi statis Ark Compiler menyelesaikan masalah ini "dengan menerjemahkan fitur dinamis dalam bahasa pemrograman ke dalam kode mesin secara mulus."
  • Proses kompilasi yang ada berlangsung selama atau setelah instalasi paket aplikasi pada perangkat seluler. Ark Compiler dirancang untuk penerapan selama pengembangan perangkat lunak, yang kami anggap membantu menghilangkan overhead waktu selama instalasi dan eksekusi. Kami berasumsi bahwa pengembang aplikasi akan dapat secara langsung mengkompilasi berbagai bahasa ke dalam kode mesin asli selama pembuatan aplikasi proses pengembangan, dan APK yang dihasilkan tidak memerlukan interaksi dengan penerjemah atau mesin virtual untuk melakukannya fungsi. Hal ini secara teoritis akan mengurangi biaya overhead yang terkait dengan JNI, misalnya.
  • Ark Compiler juga mengubah sifat kolektif Pengumpulan Sampah. Hal ini memungkinkan peristiwa GC terjadi secara terpisah untuk thread Java yang berbeda. Pendekatan terkotak-kotak ini mengklaim menawarkan lebih sedikit jank pada aplikasi latar depan.

Sebagai hasil dari perubahan ini, Ark Compiler bisa tampaknya meningkatkan kelancaran pengoperasian sistem Android hingga 24%, kecepatan respons hingga 44%, dan kelancaran aplikasi pihak ketiga hingga 60%, mengklaim membawa kinerja aplikasi Android pada tingkat yang sama dengan iOS.

Ark Compiler saat ini dikompilasi dan dioptimalkan untuk arsitektur chip ARM. Huawei berharap di masa depan, desain perangkat keras dan perangkat lunak yang kolaboratif akan mampu memaksimalkan kemampuan chip Kirin.

Ark Compiler mendukung penggunaan Java standar, memungkinkan kompilasi langsung aplikasi pihak ketiga tanpa memerlukan pengembang aplikasi untuk melakukan modifikasi kode apa pun. Ark Compiler juga memungkinkan "penyesuaian struktur kode" untuk peningkatan lebih lanjut pada kinerja dan memori. Huawei telah memilih untuk menjadikan Ark Compiler sebagai sistem sumber terbuka, yang memungkinkan pengembang pihak ketiga untuk mengadopsinya dan mengadaptasi teknologi untuk kebutuhan mereka, melanjutkan penerapannya dengan pengembang aplikasi dan telepon seluler produsen.

Meskipun Huawei tidak menyebutkan kekurangan apa pun terhadap Ark Compiler, kita dapat mengharapkan ukuran aplikasi yang besar Setidaknya, namun hal ini seharusnya tidak menimbulkan masalah apa pun pada perangkat generasi saat ini yang memiliki kapasitas yang cukup penyimpanan. Kami juga memperkirakan Ark Compiler tidak akan tersedia untuk semua arsitektur CPU, karena masalah kompatibilitas Google bukanlah masalah bagi Huawei. Ark Compiler dirancang untuk digunakan selama pengembangan dan bukan selama instalasi; Hal ini memberikan indikasi bahwa Huawei mungkin telah memodifikasi cara aplikasi disebarkan dan diinstal pada perangkat Android, dan juga mungkin telah mengerjakan desain APK mereka sendiri. Jika benar, hal ini dapat menimbulkan masalah kompatibilitas yang besar dalam ekosistem, dan akan memakan waktu lama sebelum fitur ini menjadi fitur standar Android, jika memang ada.

Tidak melakukan kompilasi pada perangkat pengguna juga menimbulkan pertanyaan besar tentang optimasi. ART saat ini dioptimalkan berdasarkan per-mikro-arsitektur, artinya biner yang dihasilkan adalah berbeda untuk perangkat Snapdragon versus perangkat Exynos, atau bahkan untuk Snapdragon 845 versus Snapdragon 625. Pendekatan ini masuk akal bagi produsen yang memiliki kendali penuh atas SoC, seperti Apple dan Huawei. Namun, karena seluruh dunia Android menggunakan banyak SoC yang berbeda, memaksakan pengoptimalan umum untuk digunakan di seluruh perangkat akan menjadi penghalang bagi standarisasi Ark Compiler, lagi-lagi. Oleh karena itu, jangan berharap Ark Compiler akan hadir di ROM kustom favorit Anda dalam waktu dekat.

Untuk klarifikasi, Ark Compiler dikembangkan untuk bekerja dengan Android, dan Huawei tidak menyebutkan apa pun sehubungan dengan itu dugaan OS homebrew dan kompatibilitasnya dengan Ark Compiler, jadi kami tidak membuat asumsi mengenai hal ini.

Huawei berencana mengadakan dua konferensi besar yang didedikasikan untuk para pengembang dan ekosistem yang lebih besar. Ini adalah Konferensi Pengembang Perangkat Tiongkok Huawei dan Konferensi Pengembang Aliansi Hijau Tiongkok. Kedua acara tersebut akan membahas isu-isu open source spesifik terkait Ark Compiler Huawei, dalam upaya menjadikan manfaat teknologi ini dapat diakses seluas mungkin.


Terima kasih khusus kepada Kontributor Senior yang Diakui XDA Dees_Troy dan Pengembang yang Diakui arter97 atas bantuan dan masukannya.

Catatan: Huawei/Honor telah berhenti menyediakan kode buka kunci bootloader resmi untuk perangkatnya. Oleh karena itu, bootloader perangkat mereka tidak dapat dibuka kuncinya, yang berarti pengguna tidak dapat melakukan root atau menginstal ROM khusus.