निम्न कोड साबित करता है कि विधि 1 विधि 2 से तेज है। क्या कोई टिप्पणी कर सकता है कि इस तरह के व्यवहार का कारण क्या है।स्थानीय सदस्य तेज़ या इंस्टेंस सदस्य
class Trial {
String _member;
void method1() {
for(int i=0;i<30480;i++) {
_member += "test";
}
}
void method2() {
String temp="";
for(int i=0;i<30480;i++) {
temp += "test";
}
_member = temp;
}
public static void main(String args[]) {
Trial t = new Trial();
long startTime1 = System.currentTimeMillis();
t.method1();
long endTime1 = System.currentTimeMillis();
long startTime2 = System.currentTimeMillis();
t.method2();
long endTime2 = System.currentTimeMillis();
System.out.println(endTime1 - startTime1);
System.out.println(endTime2 - startTime2);
}
}
के बाहर उपयोग नहीं किया गया है आपने कितनी बार अपना परीक्षण चलाया? क्या आपने लूप में कई बार दो प्रकारों को चलाने और चलाने की कोशिश की? क्या आपने अपनी कॉल के आदेश को आजमाया और घुमाया? –
[jmh] (http://openjdk.java.net/projects/code-tools/jmh/) का उपयोग करके बेंचमार्क को कार्यान्वित करने का प्रयास करें। यह जेवीएम डेवलपर्स द्वारा डिजाइन किया गया एक विशेष उपकरण है। आप अपने स्वयं के बेंचमार्क के बजाय इस टूल का उपयोग करके कई गलतियों से बच सकते हैं। –
मैंने इसे 10 बार कोशिश की, और दूसरा हमेशा तेज़ चलता है। – simaremare