optimization - Need Clarification in Code Efficiency -


यह मेरा कोड है;

  int arr [10] = {1,2, 3,4,5,6,7,8,9,10}; // I को arr [i] का उपयोग करते हुए कुछ ऑपरेशन करने की आवश्यकता है I =!   

a।

  के लिए ( इंट आई = 0; आई & lt; 10; i ++) {if (i! = 2) एआरआर [i] का उपयोग करते हुए कुछ काम करते हैं; }   

ख।

  के लिए (int i = 0; i & lt; 10; i ++) [मैं]; } एआरएआर के लिए किए गए काम को पूर्ववत करें [2];   

एक & amp; बी एक ही काम को प्राप्त करने के दो तरीके हैं। मुझे नहीं पता कि निष्पादन की गति और लेखन शैली के संदर्भ में क्या करना अच्छा है ..

क्या आप कृपया मेरी इस में मदद कर सकते हैं।

हमेशा की तरह, यह निर्भर करता है।

यदि "कुछ काम करते हैं" तो लूप निष्पादन की तुलना में बहुत अधिक समय खर्च करता है विकल्प a)।

यदि कुछ काम करना बहुत मुश्किल है 1 जोड़ने का विकल्प, विकल्प ख) तेजी से होना चाहिए क्योंकि लूप बिना सशर्त समान चलता है और इतना अधिक पाइपलाइन-अनुकूल है। P> एक तीसरा विकल्प लूप से पहले सरणी पुन: क्रमबद्ध हो जाएगा (ताकि "काम" -निर्वाचित सन्निहित हैं) और बाद में क्रमिकरण को पूर्ववत करें इस तरह दोनों विकल्पों के लाभ हो सकते हैं।

चौथा: शायद संकलक आपके लिए कुछ अनुकूलन कुछ भी करता है। उदाहरण के लिए यह दो छोरों में लूप को विभाजित कर सकता है, 2 से कम तत्वों के लिए एक और 2 से अधिक तत्वों के लिए दूसरा।

विकल्पों का सापेक्ष लाभ भी आपके कोड पर चलने वाले आर्किटेक्चर पर निर्भर करता है यदि विकल्प स्पष्ट नहीं है और प्रदर्शन में अंतर वास्तव में है, तो आपको विकल्पों को मापना होगा और बेहतर विकल्प चुनना होगा।

Comments