बूस्ट :: संस्करण एक विविध कंटेनर को प्रकार के एक विषम सेट में हेरफेर करने के लिए लगता है। मैं इसकी लागत सोच रहा हूँ। स्मृति में, मुझे लगता है कि यह सबसे बड़ा प्रकार और एक पूर्णांक का आकार लेता है जो प्रतिनिधित्व करता है()। Apply_visitor() के लिए, मुझे लगता है कि इसका प्रदर्शन बहुत अच्छा है, यह सीधे बहुत सारे ifs के अलावा फ़ंक्शन को कॉल कर सकता है। क्या मेरे अंक सही हैं?बूस्ट :: संस्करण स्मृति और प्रदर्शन लागत क्या है?
उत्तर
आप लगभग सही हैं।
boost::variant
के आकार है किसी भी तत्व का अधिकतम आकार है, को गिरफ्तार के रूप में सबसे बड़ा संरेखण, प्लस कुछ पूर्णांक के आकार के लिए आवश्यक है, और फिर इकट्ठे हो।
सोचो इन प्रकार का एक संस्करण के बारे में, टैग संभालने uint32_t
है:
struct foo { uint32_t value[3]; }; // size 12, align 4
struct bar { uint64_t v2; }; // size 8, align 8
एक टैग नहीं किए गए यूनियन, आकार 16 होना चाहिए 8 संरेखित; 4 बाइट टैग जोड़ने संरेखित रखने 8.
या का एक प्रकार पर विचार करने के आकार 24 तक जा चाहिए:
struct foo { uint8_t value[5]; }; // size 5, align 1
struct bar { uint16_t v2; }; // size 2, align 2
इनमें से एक टैग नहीं किए गए यूनियन आकार 6 होना आवश्यक है, संरेखित 2; 4-बाइट टैग आपको आकार 12 के लिए मजबूर करता है, 0 को संरेखित करें।
कॉल करने के लिए, मुझे उम्मीद है कि यह एक सरणी-कार्य-फ़ंक्शन लुकअप का उपयोग करता है (इस तरह मैंने अपने स्वयं के संस्करण को कार्यान्वित किया, जो कि जरूरी था क्योंकि बूस्ट ने नहीं किया था सपोर्ट कन्स्ट्रक्टर का समर्थन करें), क्योंकि यदि चेन अच्छी तरह से प्रदर्शन नहीं करते हैं और स्विच असंभव हैं।
- 1. बूस्ट। संस्करण Vs वर्चुअल इंटरफ़ेस प्रदर्शन
- 2. बूस्ट :: संस्करण और बहुरूपता
- 3. autoeventwireup प्रदर्शन लागत
- 4. ओआरएम प्रदर्शन लागत
- 5. प्रकार तुलना की प्रदर्शन लागत
- 6. क्या कच्चे बूस्ट :: संस्करण को क्रमबद्ध करना सुरक्षित है?
- 7. थ्रेडिंग संरचनाओं की प्रदर्शन लागत: मिस्ड ऑप्टिमाइज़ेशन और मेमोरी आवंटन
- 8. PHP में "शामिल" की प्रदर्शन लागत क्या है?
- 9. Thread.isInterrupted() को कॉल करने की प्रदर्शन लागत क्या है?
- 10. Symfony2 AppCache प्रदर्शन बूस्ट
- 11. बूस्ट पायथन का प्रदर्शन
- 12. बूस्ट टुपल प्रदर्शन
- 13. बूस्ट संस्करण मिल असफल
- 14. mysql प्रदर्शन बूस्ट
- 15. खाली वेक्टर की ओवरहेड लागत क्या है?
- 16. सीएमके बूस्ट पाता है लेकिन आयातित लक्ष्य बूस्ट संस्करण
- 17. सीपीयू चक्र और स्मृति में थ्रेड की किसी न किसी "लागत" क्या है?
- 18. लागत के लायक पायथन का प्रदर्शन?
- 19. #define की लागत क्या है?
- 20. प्रदर्शन आज़माएं/कैच ब्लॉक की लागत
- 21. सी # प्रदर्शन स्मृति
- 22. बूस्ट :: संस्करण स्टोर संदर्भ कैसे करता है?
- 23. बूस्ट एएसओ एकल थ्रेडेड प्रदर्शन
- 24. मेमोरी एक्सेस की लागत क्या है?
- 25. क्या गेटटर की शून्य लागत है?
- 26. बूस्ट :: फ़ंक्शन रन-टाइम प्रदर्शन
- 27. मल्टीप्रोसेसर सिस्टम में अस्थिर कीवर्ड की लागत क्या है?
- 28. बूस्ट सीरियलाइजेशन: टेम्पलेट क्लास संस्करण
- 29. अंतरिक्ष और प्रदर्शन बूस्ट के लिए बिट संरेखण
- 30. निष्पादकों का उपयोग करें और लागत दंड
बूस्ट opensource है। आप थोड़ा सा शोध कर सकते हैं और स्रोत कोड ब्राउज़ कर सकते हैं। ऐसा लगता है कि आप पहले ही जानते हैं कि क्या देखना है। – Drop
'apply_visitor' हुड के नीचे" बहुत सारे ifs "करता है (वास्तव में यह संस्करण (' (() ') प्रकार के प्रकार (',()') पर एक (बड़ा, मेटाप्रोग्राम) स्विच की तरह है। जाहिर है, यह केवल न्यूनतम काम आवश्यक है।) – sehe