Sabtu, 20 Agustus 2016

Perbedaan kinerja aplikasi Tizen dan Android


Perbedaan pengembangan aplikasi di Tizen dan Android sangat berpengaruh pada kinerja akhir yang dirasakan oleh konsumen. Hal inilah yang membuat Samsung Electronics berani mengklaim bahwa OS Tizen lebih unggul dibanding pesaingnya.

Saat berlangsungnya Tizen Developer Code Night yang diadakan oleh DailySocial di Bandung minggu lalu, dua engineer dari Samsung R&D Institute Indonesia (SRIN), Kevin Winata dan Leonardus Ardyandhita, mengatakan bahwa perbedaan kinerja aplikasi di Tizen dan Android disebabkan oleh penggunaan bahasa pemrograman yang berlainan.

Android menggunakan Java yang setelah dikompilasi ke byte code maka instruksinya akan dieksekusi oleh Java virtual machine (dalam hal ini di Android adalah Dalvik atau Android Runtime/ART). Sementara Tizen menggunakan C/C++ yang dieksekusi langsung oleh hardware-nya, sehingga sistem bisa berjalan cepat dan ringan.

"Java Byte Code dapat diterjemahkan oleh Java Virtual Machine, tidak langsung oleh hardware. Namun harus diakui pemrogramannya menjadi lebih mudah sehingga proses pembuatan aplikasinya juga lebih cepat," kata Leonardus Ardyandhita kepada Liputan 6 saat berlangsungnya Tizen Developers Code Night.

Kemudahan pemrograman dengan Java ini terkait dengan mekanisme garbage collector yang secara otomatis akan membersihkan memori yang tidak terpakai, sedangkan untuk bahasa C/C++ untuk manajemen memori dilakukan secara manual oleh programmer atau pengembang aplikasi.

Menurut Leonardus, coding menggunakan bahasa C meskipun lebih sulit akan memiliki keuntungan dalam hal kinerja aplikasi yang dihasilkannya kelak. Sebaliknya, pemrograman Android melalui Java jelas lebih mudah namun pemrosesan nantinya tergolong lambat, dan garbage collector kadang malah bisa menjadi bumerang yang menghambat proses komputasi aplikasi.


Garbage Collector penyebab lag di aplikasi Android?

Seperti dijelaskan sebelumnya Android Virtual Machine (Dalvik maupun ART) bergantung pada skema manajemen memori otomatis, sebuah landasan utama dari pemrograman berbasis Java yang telah menjadi bagian dari ekosistem Android sejak awal. Manajemen memori otomatis berarti bahwa programmer atau pengembang aplikasi tidak perlu bertanggung jawab untuk mengalokasikan memori cadangan secara manual maupun membebaskan memori setelah selesai. Kelemahannya adalah bahwa pengembang juga tidak lagi memiliki kontrol penuh untuk membuat software atau aplikasi buatannya bisa bekerja secara optimal.

Manajemen memori otomatis ini dilakukan oleh sebuah mekanisme yang disebut Garbage Collector. Setiap kali sebuah aplikasi membutuhkan memori untuk dialokasikan dan ketika heap (ruang memori yang didedikasikan untuk setiap aplikasi) tidak mampu untuk menampung alokasi itu, maka Garbage Collector secara otomatis akan dijalankan.

Tugas dari Garbage Collector adalah untuk melintasi setiap heap, menghitung semua memori yang dialokasikan oleh aplikasi, menandai semua memori yang masih digunakan, dan kemudian membebaskan semua memori yang tersisa.

Dalam kasus di Android, proses ini menghasilkan dua kali jeda; yang pertama selama fase pencacahan, dan yang kedua selama fase menandai. Jeda dalam hal ini artinya bahwa semua eksekusi code akan dihentikan sementara untuk totalitas aplikasi pada semua thread miliknya. Jika jeda yang dibutuhkan terlalu besar, maka akan terjadi penurunan frame saat proses rendering aplikasi, yang pada gilirannya mengakibatkan lag dalam pengalaman pengguna saat menjalankan aplikasi.


Aplikasi Java membutuhkan lebih banyak memori dibanding aplikasi C/C++

Dalam kebanyakan kasus, aplikasi Java mengkonsumsi memori yang jauh lebih besar daripada aplikasi C/C++ karena tiga hal: Java virtual machine, ClassLoader dan Garbage Collector. Berapa bagian dari ClassLoader ini harus dimuat lebih dulu sebelum program dieksekusi yang terkadang membuat startup aplikasi Android menjadi lebih lambat seperti pada video berikut.



Namun ada sisi positif dari penggunaan aplikasi berbasis Java oleh Android ini buat ekosistem aplikasi OS baru seperti Tizen. Java Byte Code hasil kompilasi yang berjalan pada virtual machine ini biasanya independen dari berbagai fitur khusus yang dimiliki oleh sistem operasi (platform independent language).

Hal inilah yang kemudian dimanfaatkan oleh pengembang pihak ketiga seperti Openmobile untuk menghadirkan layanan ACL yang bisa membuat aplikasi Android bisa berjalan pada smartphone Tizen. Dan hal ini juga yang merupakan kelebihan aplikasi Java dibanding C/C++ yang sangat tergantung pada hardware (compiled language).


Bersambung...


Tidak ada komentar:

Poskan Komentar