Nastavil jsem tabulku se 4000 řádky a 10 sloupci s 10 znaky a provedl jsem jednoduchý test výkonu pomocí následujícího přístupu (RealTimeCounter
je třída, která měří reálný čas mezi start()
a 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);
Výsledky:
- Výchozí velikost načtení:doba provedení je přibl. 20 sekund
- velikost načtení =100:doba provedení je přibližně 2,2 s
- velikost načtení =500:doba provedení je přibližně 450 ms
- velikost načtení =2000:doba provedení je přibližně 120 ms
- velikost načtení =4000:doba provedení je přibližně 50 ms
- velikost načtení =4001:doba provedení je přibližně 10 ms (!!)
Velikost načtení tedy dělá mají významný vliv na rychlost provádění.
Všimněte si, že na druhou stranu má velikost načtení určitý vliv na spotřebu paměti. Zajímavá je rychlá analýza pomocí Runtime.getRuntime().freeMemory();
před a po výše uvedeném kódu ukázal, že dopad je mnohem menší, než bych očekával. Získaná čísla jsou:
- Výchozí velikost načtení:665 kB
- velikost načtení =100:665 kB
- velikost načtení =500:665 kB
- velikost načtení =2000:743 kB
- velikost načtení =4000:821 kB
- velikost načtení =4001:861 kB