पिछले हफ्ते मैंने एक बड़ी टेक्स्ट फ़ाइल (300,000 लाइन) को एक शब्दकोश में आग लगाने के लिए सी # में कोड की कुछ पंक्तियां लिखीं। इसे लिखने में दस मिनट लग गए और इसे एक सेकंड से भी कम समय में निष्पादित किया गया।सी ++ स्ट्रिंग मेमोरी प्रबंधन
अब मैं कोड के उस टुकड़े को C++ में परिवर्तित कर रहा हूं (क्योंकि मुझे इसे पुराने सी ++ COM ऑब्जेक्ट में चाहिए)। मैंने इस पर दो दिन बिताए हैं। :-(हालांकि उत्पादकता अंतर अपने आप पर चौंकाने वाला है, यह प्रदर्शन है कि मुझे कुछ सलाह चाहिए।
लोड करने में सात सेकंड लगते हैं, और इससे भी बदतर: यह बिल्कुल ठीक है कि सभी को मुक्त करने में काफी समय लगता है CStringWs बाद में। यह स्वीकार्य नहीं है, और मैं प्रदर्शन को बढ़ाने के लिए एक रास्ता खोजने होंगे।
वहाँ कोई मौका है कि मैं इस भयानक performace गिरावट देखे बिना इस कई तार आवंटित कर सकते हैं?
मेरा अनुमान है अभी कि मुझे सभी टेक्स्ट को एक बड़े सरणी में भरना होगा और फिर मेरी हैश तालिका इस सरणी के भीतर प्रत्येक स्ट्रिंग की शुरुआत को इंगित करेगी और CStringW सामग्री को छोड़ दें।
लेकिन इससे पहले, सी ++ विशेषज्ञों से आपसे कोई सलाह क्या है?
संपादित करें: मेरा उत्तर नीचे दिया गया है। मुझे एहसास हुआ कि यह मेरे लिए सबसे तेज़ मार्ग है, और I पर भी कदम उठाएं सही दिशा पर विचार करें - अधिक प्रबंधित कोड की ओर।
आपको वास्तव में हमें वह कोड दिखाने की ज़रूरत है जिसका आप अभी उपयोग कर रहे हैं, आपका विवरण इनपुट देने के लिए बहुत अस्पष्ट है। –
आपको निश्चित रूप से अपनी डेटा संरचना के बारे में अधिक जानकारी प्रदान करने की आवश्यकता है ... –
इससे पहले कि मैं .NET से परिचित था, सी ++ से सी # में संक्रमण - बिना किसी विचार के कि फ्रेमवर्क (मेरे मामले में वीसीएल) समान या अलग थे - क्या होगा दूसरी तरफ के रूप में चुनौतीपूर्ण रहा है। अपने प्रश्न पूछने के लिए सी ++ को दोष देने की आवश्यकता नहीं है। – overslacked