c++ - Performance of placing the value of an object field in a variable -


यहां दो कोड स्निपेट हैं c ++:

  some_previously_defined_array_object_class object1; Int nrows = object1.rows; Int ncols = object1.cols; Int ऑब्जेक्टिज = ऑब्जेक्ट 1.size (); Int some_metric1; Int some_metirc2; Some_metric1 = nrows * ncols + 2 / (3 + एनसीओएल); Some_metric2 = ऑब्जेक्टिज़ + 0.5 * एनकॉल; // मेरे इंटैगमेंट के क्षेत्रों के मूल्य वाले कुछ इंट को परिभाषित करने के बजाय, क्या मैं हमेशा ऑब्जेक्ट 1। सीधे सीधे (और दूसरों को भी) का उपयोग करना चाहिए?  

इस तथ्य के अलावा, मुझे लगता है कि एक स्थान पर इन्टस के मूल्य को बदलने में आसान है, पहले मैंने सोचा कि यह हर बार फ़ील्ड तक पहुंचने के बजाय इनट्स में मूल्य रखने के लिए और अधिक कुशल होगा। । अब, मैं काफी अनिश्चित हूँ कि यह roes और cols के लिए मामला है।

दूसरी ओर, "object.size ()" के लिए, क्योंकि यह एक फ़ंक्शन है और यह मान संभव नहीं है अक्सर बदल जाते हैं, क्या यह हर बार कंप्यूटिंग के बजाय एक बार गणना करने के लिए और बाकी प्रोग्राम के लिए इंट का उपयोग करने के लिए सुरक्षित शर्त है? ठीक है, इस मामले में मैं अपनी कक्षा में एक फ़ील्ड "आकार = पंक्तियाँ * स्तंभ" बना सकता था, लेकिन यह केवल एक सरल उदाहरण है।

तो, इस पर कोई विचार?

चूंकि object1 एक स्थानीय चर है, वहां पहले से ही object1 के लिए आरक्षित स्टैक पर स्थान है .rows और object1.cols ;

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

object1.size () मामले में आप प्रदर्शन का लाभ देख सकते हैं यदि आप ऑब्जेक्ट की गई का मान एक से अधिक बार यदि आप इन कम्प्यूटेशंस को केवल कुछ बार चल रहे हैं, तो फिर, प्रदर्शन अंतर नगण्य होगा। (यदि संकलक आकार () के कार्यान्वयन को देख सकता है और इसे const घोषित किया जाता है तो यह आकार () <के लिए कई कॉल को अनुकूलित कर सकता है < / कोड> वैसे भी!)


Comments

Popular posts from this blog

apache - 504 Gateway Time-out The server didn't respond in time. How to fix it? -

c# - .net WebSocket: CloseOutputAsync vs CloseAsync -

c++ - How to properly scale qgroupbox title with stylesheet for high resolution display? -