1. Dalam loop penting, hilangkan pemanggilan metode saat menilai penghentian loop.
Copy kode kodenya sebagai berikut:
for(int i=0; i<koleksi.ukuran(); i++)
{
...
}
for(int i=0; i<koleksi.ukuran(); i++)
{
...
}
Ganti dengan…
Copy kode kodenya sebagai berikut:
lihat salinan biasa ke cetak papan klip?
untuk(int i=0;n=koleksi.ukuran();i<n;i++)
{
...
}
2. Biasanya, memindahkan item yang tidak terkait dengan indeks perulangan ke luar perulangan.
Copy kode kodenya sebagai berikut:
for(int i=0;terminal=x.panjang;i<terminal;i++){
X[i]=x[i]/skalaA*skalaB;
}
for(int i=0;terminal=x.panjang;i<terminal;i++){
X[i]=x[i]/skalaA*skalaB;
}
Ubah ke
Copy kode kodenya sebagai berikut:
skala ganda = skalaB/skalaA;
for(int i=0; terminal=x.panjang; i<terminal; i++){
X[i]=x[i]*skala;
}
2. Tali
Hilangkan penggabungan string Saat membuat string panjang, selalu gunakan StringBuffter daripada String
Alokasikan terlebih dahulu ruang StringBuffer
StringBuffer sb = StringBuffer baru(5000);
3. Tipe data dasar
Gunakan tipe data dasar dalam loop penting (tipe data int biasanya lebih cepat daripada tipe data panjang/ganda)
Kelas wrapper dari tipe data dasar (Boolean, Integer, dll.) terutama digunakan ketika parameter metode yang diteruskan harus berupa referensi ke suatu objek (bukan tipe data dasar)
Gunakan pengubah final statis untuk semua ekspresi aljabar konstan
Seseorang membuat konstanta lebih mudah untuk direferensikan (kompiler menghitung ekspresi konstanta terlebih dahulu)
4. Kelainan
Pengecualian hanya digunakan untuk satu kondisi kesalahan yang sebenarnya
Melempar pengecualian dan mengeksekusi blok tangkapan itu mahal (terutama karena mendapatkan snapshot dari tumpukan thread saat membuat pengecualian)
Pengecualian diberikan hanya jika kondisinya benar-benar tidak normal
Lakukan optimasi compiler dan runtime dengan menempatkan beberapa pemanggilan metode dalam blok coba/tangkap alih-alih mengimplementasikan beberapa blok coba/tangkap untuk setiap pemanggilan metode
5. Tolok Ukur
Perhatikan bahwa semua tip ini akan bervariasi antara platform dan mesin virtual
Misalnya: di beberapa container servlet, lebih cepat mengeluarkan byte melalui OutputStream - di container lain, lebih cepat mengeluarkan karakter melalui PrintWriter
Kiat-kiat ini menjelaskan rekomendasi paling portabel
Anda mungkin perlu menjalankan beberapa tolok ukur untuk menentukan mana yang tercepat di platform Anda