2010-11-09 16 views
6

जावा प्रदर्शन के बारे में बात करते हुए ... या बेहतर क्या है? if..else या एक से अधिक सरल है, तोबेहतर क्या है? अगर ...

if(condition) { 
    some_code; 
    return value; 
} 
else if(condition) { 
    some_code; 
    return value; 
} 
else if(condition) { 
    some_code; 
    return value; 
} 
else { 
    some_code; 
    return value; 
} 

या

if(condition) { 
    some_code; 
    return value; 
} 

if(condition) { 
    some_code; 
    return value; 
} 

if(condition) { 
    some_code; 
    return value; 
} 

some_code;  
return value; 

इच्छुक अपने विचारों

Thnx में!

+0

यदि कोई प्रदर्शन अंतर है, तो यह शायद नगण्य है। –

+4

मैं कोई विशेषज्ञ नहीं हूं, लेकिन अगर कोई अंतर होता तो मुझे आश्चर्य होगा - लेकिन सभी प्रदर्शन प्रश्नों का उत्तर "इसे स्वयं आज़माएं और देखें"। (और दूसरा जवाब यह है कि "यह शायद आपकी बाधा नहीं है।") यह मुझे * शैली * प्रश्न जैसा दिखता है। – Cascabel

+0

कोई फर्क नहीं पड़ता "some_code", केवल जावा कैसे निष्पादित करें "if" कथन – dnlmax

उत्तर

16

कोई फर्क नहीं पड़ता, प्रदर्शन-वार। सबसे अधिक पढ़ने योग्य विकल्प चुनें, जो या तो कोड के आधार पर हो सकता है।

सामान्य रूप से इन सूक्ष्म अनुकूलन के बारे में चिंता न करें। ऑप्टिमाइज़ेशन केवल तभी आना चाहिए जब आप यह निर्धारित कर लें कि एक प्रदर्शन समस्या है जिसे ठीक करने की आवश्यकता है।

"हमें छोटी क्षमता के बारे में भूल जाना चाहिए, समय के बारे में 9 7% कहें: premature optimization सभी बुराइयों की जड़ है।" — डोनाल्ड नुथ

+3

+1 "μ-opt के बारे में चिंता न करें" –

+2

jeje, महान उद्धरण! – dnlmax

0

मुझे विश्वास है कि एक भी if बेहतर होगा, क्योंकि जब भी कोई वास्तविक स्थिति आती है, तो यह सुरक्षित रूप से अन्य else विकल्प को सुरक्षित रूप से छोड़ सकता है क्योंकि उन्हें निष्पादित नहीं किया जाएगा। यदि आपने एकाधिक if एस का उपयोग किया है, तो बाद की सभी स्थितियों का मूल्यांकन किया जाना चाहिए (भले ही मुझे लगता है कि आप सोच रहे हैं, वे पारस्परिक रूप से अनन्य होंगे)।

+0

हो सकते हैं लेकिन उदाहरण में वे किसी भी तरह निष्पादित नहीं होने जा रहे हैं क्योंकि फ़ंक्शन पहुंचने से पहले लौटाता है। –

+0

वैसे भी इस उदाहरण में कोई फर्क नहीं पड़ता है, क्योंकि प्रत्येक 'अगर' शरीर में 'वापसी' कथन है। –

+0

लेकिन यह वैसे भी 'रिटर्न' निर्माण फॉर्म के कारण ऐसा कर सकता है। –

1

अगर ... किसी और उदाहरण आप दे return रों की जरूरत नहीं है अगर यह कोई वापसी मान के साथ एक समारोह में है। उस स्थिति में, अगर ... और पढ़ने के लिए आसान हो जाएगा।

इसके अलावा, अगर ... अन्य को प्राथमिकता दी जानी चाहिए क्योंकि यह स्पष्ट करता है कि ये मामले परस्पर अनन्य हैं।

यदि यहां कोई प्रदर्शन अंतर है, तो आपका कंपाइलर/दुभाषिया बेकार है।

+0

यदि कोई प्रदर्शन अंतर है, तो संकलक बेकार है। – starblue

+0

एक व्याख्या की गई भाषा के लिए दुभाषिया हो सकता है। – uckelman

0

स्थिति पर निर्भर करता है।

यदि शर्तें पारस्परिक रूप से अनन्य हैं, तो else का उपयोग करें। यह जावा को सत्य होने के बाद किसी भी स्थिति की जांच नहीं करेगा।

अगर वे नहीं पारस्परिक रूप से तो if की एक सूची का उपयोग कर किसी और के बिना कई मामलों होने के लिए पैदा कर सकता है विशेष कर रहे हैं।

आपके मामले में, प्रत्येक में रिटर्न के साथ, प्रदर्शन क्योंकि तुलना की एक ही नंबर कोई बात नहीं क्या किया जा करने की आवश्यकता होगी एक ही हो जाएगा।

+0

इससे कोई फर्क नहीं पड़ता कि शर्तें पारस्परिक रूप से अनन्य हैं या नहीं। (अगर ऐसा होता है तो प्रत्येक 'तब' खंड में वापसी नहीं होती है ...) –

0

मैं कोड पठनीयता और रखरखाव के रूप में प्रदर्शन के बारे में चिंता नहीं करता। जैसा कि बताया गया था, कोड संकलित होने के बाद प्रदर्शन अनिवार्य रूप से समान होगा।

यह मेरी प्राथमिकता बजाय व्यवहार परोक्ष "के माध्यम से गिर" की अनुमति की, मेरी स्थिति के बारे में अधिक स्पष्ट हो रहा है।

इसके अलावा, एकल अगर किसी और के मुकाबले किसी भी तेजी से मूल्यांकन नहीं किया जाएगा। यदि मामला सच है तो अन्य पथ की जांच कभी नहीं की जाएगी।

संबंधित मुद्दे