हालांकि यह आमतौर पर माना जाता है कि std::vector array के समान ही काम करता है, हाल के परीक्षणों ने इस धारणा को चुनौती दी है। इस लेख में, हम std::vector और सादे सरणियों के बीच प्रदर्शन अंतर की जांच करेंगे और अंतर्निहित कारणों पर प्रकाश डालेंगे।
परीक्षण करने के लिए, एक बेंचमार्क लागू किया गया था जिसमें बार-बार बड़े सरणियों को बनाना और संशोधित करना शामिल था पिक्सेल वस्तुओं का. परीक्षण दो कार्यान्वयनों का उपयोग करके किए गए थे: std::vector और कच्चे पॉइंटर्स जो सादे सरणियों का अनुकरण करते हैं।
प्रारंभिक परिणामों में एक महत्वपूर्ण प्रदर्शन अंतर का पता चला, जिसमें std::vector सादे सरणियों की तुलना में लगभग 3-4 गुना धीमा था।
UseArray completed in 2.619 seconds UseVector completed in 9.284 seconds UseVectorPushBack completed in 14.669 seconds
इस आश्चर्यजनक खोज ने कोड की बारीकी से जांच करने के लिए प्रेरित किया। यह पता चला कि स्पष्ट प्रदर्शन अंतर इस तथ्य से उत्पन्न हुआ है कि वेक्टर में एक तत्व को संशोधित करने के लिए इसे दो बार एक्सेस करने की आवश्यकता होती है: एक बार वेक्टर का आकार बदलने के लिए और फिर से तत्व को आरंभ करने के लिए।
प्रत्येक को आरंभ करने के लिए वेक्टर कार्यान्वयन को अनुकूलित करके तत्व केवल एक बार, हमने नाटकीय रूप से बेहतर प्रदर्शन प्राप्त किया:
UseVector completed in 2.216 seconds
यह संशोधित प्रदर्शन अब सादे प्रदर्शन के बराबर है सरणियाँ। यह ध्यान रखना महत्वपूर्ण है कि देखा गया मामूली अंतर अंतर्निहित डेटा संरचना से असंबंधित कारकों के कारण हो सकता है।
निष्कर्ष में, जबकि std::vector एक सुविधाजनक और बहुमुखी डेटा संरचना है, इसका प्रदर्शन कारकों से प्रभावित हो सकता है जैसे कि तत्वों को प्रारंभ करने और उन तक पहुंचने का तरीका। जब प्रदर्शन महत्वपूर्ण हो, तो विशिष्ट आवश्यकताओं पर सावधानीपूर्वक विचार करना और सादे सरणियों या अन्य डेटा संरचनाओं जैसे वैकल्पिक विकल्पों का पता लगाना बुद्धिमानी है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3