अंगूठे का नियम यह है कि छोटे structs को मूल्य से गुजरना ठीक है और बड़े लोगों को पॉइंटर्स किया जाना चाहिए।मूल्य से कुशलता से कितने बड़े structs पारित किया जा सकता है?
मेरा प्रश्न यह है कि वास्तव में यह कटऑफ बिंदु कहां है? पॉइंटर द्वारा उन्हें पास करने से बेहतर होने से पहले संरचनाएं कितनी बड़ी हो सकती हैं।
मुझे पता है कि प्लेटफ़ॉर्म के बीच यह अलग-अलग होगा, लेकिन मुझे लगता है कि कुछ अनुमानित अनुमान दिए जा सकते हैं। एक या दो साल पहले मैंने इसे पीपीसी आर्किटेक्चर पर समझने की कोशिश की और मुझे आश्चर्य हुआ कि कोई व्यक्ति मूल्य से कुशलतापूर्वक काफी डेटा पास कर सकता है। पीपीसी में बड़ी संख्या में रजिस्टरों की वजह से 10 डबल वैल्यू सोचें या तो ठीक था। पॉइंटर द्वारा वास्तव में स्मृति में और बाहर प्रतिलिपि बनाने में शामिल थे।
हालांकि अब मैं इंटेल पर हूं और मुझे उम्मीद है कि चीजें अलग हो सकती हैं। चूंकि सीपीयू में पारंपरिक रूप से कई रजिस्ट्रार नहीं हैं, लेकिन शायद यह 64 बिट या फ़्लोटिंग पॉइंट रजिस्टरों पर अलग है?
यह निर्भर करता है .... आपको बेंचमार्क की आवश्यकता है ... –
मिच सही है, जानने का एकमात्र तरीका बेंचमार्क है। और आपके द्वारा परीक्षण किए जाने वाले प्लेटफ़ॉर्म के आधार पर आपका उत्तर अलग-अलग होगा। –
मुझे लगता है कि मेरी समस्या यह है कि मुझे नहीं पता कि बेंच को ठीक से कैसे चिह्नित किया जाए। मुझे डर है कि एक सरल उदाहरण संकलक द्वारा बहुत आसानी से अनुकूलित किया जाएगा, और वास्तविक उपयोग को प्रतिबिंबित नहीं करेगा। यह समयपूर्व अनुकूलन करने के लिए बेवकूफ लग सकता है, लेकिन ऐसा कुछ है जिस पर मैंने अच्छा प्रदर्शन करने के लिए संघर्ष किया है, इसलिए मैं अनावश्यक बेवकूफ पसंद नहीं करना चाहता हूं। यह मेरे पूरे एपीआई डिज़ाइन को प्रभावित करेगा, इसलिए मैं बाद में ये सब बदलना नहीं चाहता हूं। –