अगर मैं निम्नलिखित वर्ग है:कक्षा में सदस्यों का इष्टतम आदेश क्या है?
class Example
{
bool m_b1;
SomeClass m_sc;
bool m_b2;
char * m_name;
bool m_b3;
int m_i1;
SomeClass * m_sc;
int m_i2;
};
सदस्यों के इष्टतम क्रम क्या है? जहां तक मुझे पता है, सदस्यों की घोषणा का आदेश स्मृति के सदस्यों के क्रम के बराबर है, इस वर्ग का उदाहरण बनाते समय।
- क्या मुझे सदस्यों को सॉर्ट करना चाहिए ताकि बराबर प्रकार एक साथ हो?
- क्या सभी पॉइंटर्स एक ही प्रकार के रूप में गिना जाता है?
- क्या पुनर्गठन वस्तु के आकार पर प्रभाव डालता है? क्या 4 या 8 बाइट संरेखण यहां लागू होता है?
- मैं उपरोक्त के प्रभाव कैसे देख सकता हूं? क्या आकार ऑब्जेक्ट द्वारा उपयोग की गई स्मृति को संरेखण के लिए खाली स्थान समेत दिखाता है?
- सदस्यों के क्रमबद्ध करने के लिए दिन के अंत में बेहतर है ताकि उनका अर्थ और संदर्भ समझना आसान हो?
जब तक आप बहुत कम स्मृति के साथ एक एम्बेडेड सिस्टम के लिए प्रोग्रामिंग कर रहे हैं मैं तर्क है कि आदेश नहीं है ज्यादा बात। केवल तभी यदि आपके पास सदस्य चर के सरणी या * बहुत * हैं (इस मामले में मैं कहूंगा कि आपका डिज़ाइन गलत है) ताकि यह कैशिंग समस्याओं का कारण बन सके और कोड अत्यंत समय-महत्वपूर्ण (जो शायद ही कभी मामला है), केवल तभी क्या आपको समूह और व्यवस्था के बारे में सोचना शुरू करना चाहिए। पठनीयता को प्राथमिकता देकर शुरू करें (जो रखरखाव का तात्पर्य है), और केवल तभी बदला जाए जब आपको पूरी तरह से आवश्यकता हो। –
मैं तर्क दूंगा कि ऑब्जेक्ट का ओवरलैल आकार रनटाइम पर अधिक प्रभाव डालता है जहां आप सदस्य घोषित किए जाते हैं। सभी सदस्यों को संकलन समय पर 'इस + ऑफ़सेट' की गणना करके सीपीयू द्वारा एक्साइज किया जाता है, इसलिए रनटाइम में कोई फर्क नहीं पड़ता –