Saya telah menyiapkan tabel dengan 4000 baris dan 10 kolom dengan masing-masing 10 karakter dan membuat tes kinerja sederhana menggunakan pendekatan berikut (RealTimeCounter
adalah kelas yang mengukur waktu nyata antara start()
dan stop()
):
List<String> myResult = new ArrayList<>();
ResultSet rs = s.executeQuery("SELECT * FROM Performance");
RealTimeCounter rtc = new RealTimeCounter();
rtc.start();
while(rs.next()) {
myResult.add(rs.getString(1));
}
rtc.stop();
System.out.println(rtc);
Hasil:
- Ukuran pengambilan default:waktu eksekusi kira-kira. 20 detik
- ukuran pengambilan =100:waktu eksekusi kira-kira 2,2 detik
- ukuran pengambilan =500:waktu eksekusi kira-kira 450 mdtk
- ukuran pengambilan =2000:waktu eksekusi kira-kira 120 mdtk
- ukuran pengambilan =4000:waktu eksekusi kira-kira 50 mdtk
- ukuran pengambilan =4001:waktu eksekusi kira-kira 10 mdtk (!!)
Jadi, ukuran pengambilan tidak memiliki dampak signifikan pada kecepatan eksekusi.
Perhatikan bahwa, di sisi lain, ukuran pengambilan berdampak pada konsumsi memori. Cukup menarik, analisis cepat menggunakan Runtime.getRuntime().freeMemory();
sebelum dan sesudah kode di atas menunjukkan bahwa dampaknya jauh lebih kecil dari yang saya harapkan. Angka yang saya dapatkan adalah:
- Ukuran pengambilan default:665k
- ukuran pengambilan =100:665rb
- ukuran pengambilan =500:665k
- ukuran pengambilan =2000:743rb
- ukuran pengambilan =4000:821rb
- ukuran pengambilan =4001:861rb