-
Title:
03-13 Container_Performance
-
Description:
03-13 Container_Performance
-
Kita telah membahas bagaimana kode Anda
dapat menjadi pelan karena jenis
-
perangkat keras yang menjalankannya,
-
ingat semua masalah
pencabangan floating point?
-
Baik, kebanyakan itu bukan masalah
bagi perangkat keras saat ini.
-
Ada beberapa masalah yang masih
perlu Anda khawatirkan, yaitu
-
kinerja sederhana pada
bahasa yang Anda gunakan.
-
Contohnya, algoritma dasar
seperti penyortiran.
-
Sekarang ada banyak
cara untuk menyortir,
-
dan beberapa di antaranya lebih baik
dari yang lain, tergantung kondisinya.
-
Misalnya, quicksort umumnya
-
lebih cepat dari bubble sort, kecuali
Anda memiliki kurang dari seribu elemen
-
atau mencari objek
di daftar sortiran yang besar.
-
Biasanya, cara terbaik untuk
melakukannya adalah pencarian biner.
-
Namun, yang sangat berbeda adalah mencari
objek di susunan yang tidak disortir.
-
Sekarang, daripada membandingkan nilai
setiap objek yang Anda cari,
-
Anda dapat menggunakan fungsi hash
untuk segera menemukannya.
-
Ini semua adalah kanon dasar ilmu
komputer modern dan struktur data.
-
Untungnya, bahasa modern seperti
Java menyuplai kontainer dan
-
algoritme untuk Anda, sehingga
Anda tidak perlu menulis ulang fungsi
-
Murmur 3 Hash atau
quicksort lagi dan lagi.
-
Tetapi, saya ungkapkan sesuatu di sini.
-
Dari pengalaman pemrograman saya,
-
satu masalah yang terus
mengganggu kinerja proyek
-
berkaitan dengan kinerja
objek kontainer dengan bahasa ini.
-
Maksud saya, itu luar biasa bukan?
-
Java menyediakan penerapan
kelas vektor mana yang
-
Anda dapat menekan, memindah, menambah,
dan menghapus objek yang cocok
-
namun, agar fleksibel, perlu digunakan
struktur daftar yang bertautan secara
-
mendasar, yang memiliki
karakteristik kinerja unik.
-
Selama Anda hanya beroperasi
di depan daftar, maka akan sangat cepat
-
Tetapi, jika Anda
ingin menyisipkan atau
-
menghapus di tempat lain, maka akan
menghasilkan waktu kemungkinan terburuk.
-
Intinya, hanya karena
sistem mendasar menyediakan
-
kontainer ini, bukan berarti
akan berkinerja tinggi
-
tergantung bagaimana program Anda
akan benar-benar menggunakannya.
-
James Sutherland menerbitkan serangkaian
patokan dasar untuk kinerja
-
struktur data tertentu yang disediakan
oleh kerangka kerja Java dan
-
ada perbedaan antara
kinerja dan fungsi
-
yang harus kita sadari.
-
Misalnya, dia menemukan
bahwa kinerja Hashtable
-
lebih cepat sekitar 22%
daripada kinerja HashMap,
-
tergantung bagaimana Anda
menggunakan kontainer itu sendiri.
-
Intinya seperti ini.
-
Sudahkan Anda memprofilkan kelas
yang Anda gunakan di kode?
-
Apakah Anda yakin mereka menggunakan
kontainer tercepat mutlak untuk
-
hal yang benar-benar
dikerjakan kode Anda?
-
Mmm, ya, itu pendapat saya.
-
Tapi, kabar baiknya Anda bisa memperoleh
visibilitas kinerja kontainer
-
ini dengan beberapa MPI
profil praktis di Android.
-
Jadi, mari kita lihat apakah kode Chris
valid untuk pemeriksaan kita.