मैंने 4000 पंक्तियों और 10 स्तंभों के साथ 10 वर्णों वाली एक तालिका स्थापित की है और निम्नलिखित दृष्टिकोण (RealTimeCounter
का उपयोग करके एक सरल प्रदर्शन परीक्षण किया है। एक वर्ग है जो start()
. के बीच के वास्तविक समय को मापता है और 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);
परिणाम:
- डिफ़ॉल्ट फ़ेच आकार:निष्पादन समय लगभग है। 20 सेकंड
- लाने का आकार =100:निष्पादन का समय लगभग 2.2 सेकंड . है
- लाने का आकार =500:निष्पादन का समय लगभग 450 मिसे . है
- लाने का आकार =2000:निष्पादन का समय लगभग 120 मिसे . है
- लाने का आकार =4000:निष्पादन का समय लगभग 50 मिसे . है
- लाने का आकार =4001:निष्पादन का समय लगभग 10 मिसे . है (!!)
तो, लाने का आकार करता है निष्पादन की गति पर महत्वपूर्ण प्रभाव पड़ता है।
ध्यान दें कि, दूसरी ओर, फ़ेच आकार का मेमोरी खपत पर कुछ प्रभाव पड़ता है। दिलचस्प रूप से पर्याप्त है, Runtime.getRuntime().freeMemory();
का उपयोग करके एक त्वरित विश्लेषण उपरोक्त कोड से पहले और बाद में पता चला कि प्रभाव मेरी अपेक्षा से बहुत कम है, हालाँकि। मुझे जो नंबर मिले हैं वे हैं:
- डिफ़ॉल्ट फ़ेच आकार:665k
- लाने का आकार =100:665k
- लाने का आकार =500:665k
- लाने का आकार =2000:743k
- लाने का आकार =4000:821k
- लाने का आकार =4001:861k