0:00:00.330,0:00:03.840
Kita telah membahas bagaimana kode Anda[br]dapat menjadi pelan karena jenis
0:00:03.840,0:00:06.490
perangkat keras yang menjalankannya,
0:00:06.490,0:00:09.180
ingat semua masalah[br]pencabangan floating point?
0:00:09.180,0:00:11.750
Baik, kebanyakan itu bukan masalah[br]bagi perangkat keras saat ini.
0:00:11.750,0:00:14.540
Ada beberapa masalah yang masih[br]perlu Anda khawatirkan, yaitu
0:00:14.540,0:00:18.700
kinerja sederhana pada[br]bahasa yang Anda gunakan.
0:00:18.700,0:00:21.230
Contohnya, algoritma dasar[br]seperti penyortiran.
0:00:21.230,0:00:23.300
Sekarang ada banyak[br]cara untuk menyortir,
0:00:23.300,0:00:27.078
dan beberapa di antaranya lebih baik[br]dari yang lain, tergantung kondisinya.
0:00:27.078,0:00:29.740
Misalnya, quicksort umumnya
0:00:29.740,0:00:34.070
lebih cepat dari bubble sort, kecuali[br]Anda memiliki kurang dari seribu elemen
0:00:34.070,0:00:37.370
atau mencari objek[br]di daftar sortiran yang besar.
0:00:37.370,0:00:40.360
Biasanya, cara terbaik untuk[br]melakukannya adalah pencarian biner.
0:00:40.360,0:00:44.260
Namun, yang sangat berbeda adalah mencari[br]objek di susunan yang tidak disortir.
0:00:44.260,0:00:47.290
Sekarang, daripada membandingkan nilai[br]setiap objek yang Anda cari,
0:00:47.290,0:00:50.090
Anda dapat menggunakan fungsi hash[br]untuk segera menemukannya.
0:00:50.090,0:00:54.070
Ini semua adalah kanon dasar ilmu[br]komputer modern dan struktur data.
0:00:54.070,0:00:57.790
Untungnya, bahasa modern seperti[br]Java menyuplai kontainer dan
0:00:57.790,0:01:00.910
algoritme untuk Anda, sehingga[br]Anda tidak perlu menulis ulang fungsi
0:01:00.910,0:01:04.569
Murmur 3 Hash atau[br]quicksort lagi dan lagi.
0:01:04.569,0:01:06.260
Tetapi, saya ungkapkan sesuatu di sini.
0:01:06.260,0:01:07.950
Dari pengalaman pemrograman saya,
0:01:07.950,0:01:12.870
satu masalah yang terus[br]mengganggu kinerja proyek
0:01:12.870,0:01:17.620
berkaitan dengan kinerja[br]objek kontainer dengan bahasa ini.
0:01:17.620,0:01:19.280
Maksud saya, itu luar biasa bukan?
0:01:19.280,0:01:22.350
Java menyediakan penerapan[br]kelas vektor mana yang
0:01:22.350,0:01:26.480
Anda dapat menekan, memindah, menambah,[br]dan menghapus objek yang cocok
0:01:26.480,0:01:31.140
namun, agar fleksibel, perlu digunakan[br]struktur daftar yang bertautan secara
0:01:31.140,0:01:34.050
mendasar, yang memiliki[br]karakteristik kinerja unik.
0:01:34.050,0:01:37.310
Selama Anda hanya beroperasi[br]di depan daftar, maka akan sangat cepat
0:01:37.310,0:01:38.940
Tetapi, jika Anda[br]ingin menyisipkan atau
0:01:38.940,0:01:43.410
menghapus di tempat lain, maka akan[br]menghasilkan waktu kemungkinan terburuk.
0:01:43.410,0:01:46.290
Intinya, hanya karena[br]sistem mendasar menyediakan
0:01:46.290,0:01:49.130
kontainer ini, bukan berarti[br]akan berkinerja tinggi
0:01:49.130,0:01:52.860
tergantung bagaimana program Anda[br]akan benar-benar menggunakannya.
0:01:52.860,0:01:56.690
James Sutherland menerbitkan serangkaian[br]patokan dasar untuk kinerja
0:01:56.690,0:02:00.100
struktur data tertentu yang disediakan[br]oleh kerangka kerja Java dan
0:02:00.100,0:02:03.630
ada perbedaan antara[br]kinerja dan fungsi
0:02:03.630,0:02:05.690
yang harus kita sadari.
0:02:05.690,0:02:09.130
Misalnya, dia menemukan[br]bahwa kinerja Hashtable
0:02:09.130,0:02:13.100
lebih cepat sekitar 22%[br]daripada kinerja HashMap,
0:02:13.100,0:02:16.760
tergantung bagaimana Anda[br]menggunakan kontainer itu sendiri.
0:02:16.760,0:02:18.200
Intinya seperti ini.
0:02:18.200,0:02:20.840
Sudahkan Anda memprofilkan kelas[br]yang Anda gunakan di kode?
0:02:20.840,0:02:25.090
Apakah Anda yakin mereka menggunakan[br]kontainer tercepat mutlak untuk
0:02:25.090,0:02:27.240
hal yang benar-benar[br]dikerjakan kode Anda?
0:02:27.240,0:02:28.620
Mmm, ya, itu pendapat saya.
0:02:28.620,0:02:32.000
Tapi, kabar baiknya Anda bisa memperoleh[br]visibilitas kinerja kontainer
0:02:32.000,0:02:35.510
ini dengan beberapa MPI[br]profil praktis di Android.
0:02:35.510,0:02:38.310
Jadi, mari kita lihat apakah kode Chris[br]valid untuk pemeriksaan kita.