मैं बाइनरी खोज पेड़ों का उपयोग करने और शब्दकोशों का उपयोग कब करने की अवधारणा से जूझ रहा हूं।सी # बाइनरी पेड़ और शब्दकोश
मेरे आवेदन में मैंने थोड़ा प्रयोग किया जो सी 5 लाइब्रेरी TreeDictionary
(जो मुझे लगता है कि एक लाल-काला बाइनरी खोज पेड़ है), और सी # शब्दकोश का उपयोग किया। शब्दकोश जोड़ने/ढूंढने के संचालन में हमेशा तेज़ था और हमेशा कम मेमोरी स्पेस भी इस्तेमाल किया जाता था। उदाहरण के लिए, 1680 9 <int, float>
प्रविष्टियों पर, शब्दकोश ने 342 कीबी का उपयोग किया जबकि पेड़ 723 कीबी का इस्तेमाल किया।
मैंने सोचा कि बीएसटी को अधिक मेमोरी कुशल माना जाता है, लेकिन ऐसा लगता है कि पेड़ के एक नोड को एक शब्दकोश में एक प्रविष्टि की तुलना में अधिक बाइट की आवश्यकता होती है। क्या देता है? क्या कोई बिंदु है जहां बीएसटी शब्दकोष से बेहतर है?
साथ ही, एक साइड सवाल के रूप में, क्या किसी को पता है कि <int, float>
स्टोर्स को किसी भी प्रकार की संरचनाओं की तुलना में शब्दकोश प्रकार के उपयोग के लिए जोड़े जाने के लिए तेज + अधिक मेमोरी कुशल डेटा संरचना है?
मैं ईमानदारी से स्मृति क्षमता के बारे में चिंता नहीं करता अपने अनुप्रयोग 723 KB का उपयोग कर रहा है। मैं संग्रहित करने के लिए 50 एमबी कहता हूं, मैं शायद बेहतर डेटा संरचनाओं के बारे में सोचना शुरू कर दूंगा। – Juliet
डेटा संरचना वाले ऑब्जेक्ट में हजारों उदाहरण हो सकते हैं, इसलिए प्रत्येक केबी मायने रखता है। –
'सॉर्टेडलिस्ट' का प्रयास करें - इसमें विभिन्न विकल्पों के सबसे कम मेमोरी ओवरहेड होना चाहिए। यदि यह बहुत धीमा नहीं है (आपके आवेदन में) और कभी भी केबी वास्तव में मायने रखता है, तो यह निश्चित रूप से व्यवहार्य लगता है। जोड़ें/निकालें धीमा हो जाएगा लेकिन लुकअप बीएसटी के समान होना चाहिए। –