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.