मैं वहाँ प्रदर्शन'...! = शून्य' या 'शून्य! = ....' सर्वश्रेष्ठ प्रदर्शन?
public class Test1 {
private String value;
public void notNull(){
if(value != null) {
//do something
}
}
public void nullNot(){
if(null != value) {
//do something
}
}
}
जाँच करने के लिए दो तरीकों में लिखा था और जाँच यहाँ
public void notNull();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: getfield #2; //Field value:Ljava/lang/String;
4: ifnull 7
7: return
LineNumberTable:
line 6: 0
line 9: 7
StackMapTable: number_of_entries = 1
frame_type = 7 /* same */
public void nullNot();
Code:
Stack=2, Locals=1, Args_size=1
0: aconst_null
1: aload_0
2: getfield #2; //Field value:Ljava/lang/String;
5: if_acmpeq 8
8: return
LineNumberTable:
line 12: 0
line 15: 8
StackMapTable: number_of_entries = 1
frame_type = 8 /* same */
}
संकलन के बाद यह बाइट कोड है दो opcodes अगर हालत लागू करने के लिए उपयोग किया जाता है: पहले मामले में यह ifnull- का उपयोग स्टैक के शीर्ष मूल्य की जांच शून्य है-, और दूसरे मामले में यह if_acmpeq- चेक दो शीर्ष मान स्टैक-
से बराबर है, तो क्या यह प्रदर्शन पर प्रभाव डालेगा? (इससे मुझे निष्पादन के साथ-साथ पठनीयता के पहलू में भी अच्छा प्रदर्शन करने में मदद मिलेगी :))
पॉलीजीन का जवाब वह है जिसे आप सुनना चाहिए। लेकिन यदि आप वास्तव में अंतर को समझते हैं, तो प्रत्येक संस्करण को एक अरब गुना या उससे भी अधिक चलाएं, और देखें कि कोई मापनीय अंतर है या नहीं। फिर वापस आओ और हमें इसके बारे में बताता है। –
यह क्यों मायने रखता है, क्या आपका प्रोग्राम केवल 3 लाइन लंबा है कि यह कितना तेज़ या धीमा है कि कथन चलने पर एक अकेलापन कितना धीमा हो? –
जबकि हम इस विषय पर हैं, मैं यह साबित करना चाहता हूं कि उसी पंक्ति पर उद्घाटन घुंघराले ब्रेस डालने के रूप में सशर्त अन्य ब्रेस शैलियों की तुलना में अधिक प्रदर्शनकारी है। –