जावा में विधि मापदंडों को अंतिम घोषित करने का कोई प्रदर्शन कारण है?
जैसे की:
public void foo(int bar) { ... }
बनाम:
public void foo(final int bar) { ... }
यह मानते हुए कि bar
केवल पढ़ा जाता है और कभी संशोधित नहीं होता है foo()
।
जावा में विधि मापदंडों को अंतिम घोषित करने का कोई प्रदर्शन कारण है?
जैसे की:
public void foo(int bar) { ... }
बनाम:
public void foo(final int bar) { ... }
यह मानते हुए कि bar
केवल पढ़ा जाता है और कभी संशोधित नहीं होता है foo()
।
जवाबों:
अंतिम कीवर्ड स्थानीय चर और मापदंडों के लिए वर्ग फ़ाइल में प्रकट नहीं होता है, इस प्रकार यह रनटाइम प्रदर्शन को प्रभावित नहीं कर सकता है। इसका उपयोग केवल कोडर्स के इरादे को स्पष्ट करने के लिए है कि चर को बदला नहीं जाना चाहिए (जो कई इसके उपयोग के लिए संदिग्ध कारण मानते हैं), और अनाम आंतरिक वर्गों के साथ व्यवहार करते हैं।
इस बात पर बहुत तर्क है कि क्या विधि में अंतिम संशोधनकर्ता के पास कोई भी प्रदर्शन लाभ है क्योंकि विधियों को अनुकूलन संकलक द्वारा वैसे भी संशोधित किया जाएगा, भले ही संशोधक की परवाह किए बिना। इस मामले में इसका उपयोग केवल विधि के ओवरराइडिंग को प्रतिबंधित करने के लिए भी किया जाना चाहिए।
अंतिम पैरामीटर के लिए एकमात्र लाभ यह है कि इसका उपयोग अनाम नेस्टेड कक्षाओं में किया जा सकता है। यदि कोई पैरामीटर कभी नहीं बदला जाता है, तो संकलक पहले से ही पता लगा लेगा कि अंतिम संशोधन के बिना भी यह सामान्य ऑपरेशन के हिस्से के रूप में है। यह बहुत दुर्लभ है कि कीड़े अप्रत्याशित रूप से असाइन किए गए पैरामीटर के कारण होते हैं - यदि आपके तरीके इंजीनियरिंग के इस स्तर की आवश्यकता के लिए पर्याप्त बड़े हैं, तो उन्हें छोटा करें - आपके द्वारा कॉल की जाने वाली विधियां आपके मापदंडों को नहीं बदल सकती हैं।
कंपाइलर जो क्लास लोडिंग के बाद काम करते हैं, जैसे कि जेआईटी कंपाइलर्स, अंतिम तरीकों का लाभ उठा सकते हैं। नतीजतन, अंतिम घोषित तरीकों से कुछ प्रदर्शन लाभ हो सकते हैं।
http://www.javaperformancetuning.com/tips/final.shtml
ओह और एक और अच्छा संसाधन
मुझे लगता है कि संकलक संभवत: सभी निजी स्थिर अंतिम चर को हटा सकता है, जिसमें एक आदिम प्रकार है, जैसे कि इंट, और उन्हें सीधे सी + + मैक्रो के समान कोड में सीधे इनलाइन करें।
हालाँकि, यह अभ्यास में किया जाता है, तो मुझे कोई सुराग नहीं है, लेकिन यह कुछ स्मृति को बचाने के लिए किया जा सकता है।