मैं डेटा स्टोर करने के लिए एक शब्दकोश का उपयोग कर रहा हूं, और इसे कैशिंग कर रहा हूं। मैं सर्वर मेमोरी मुद्दों से बचना चाहता हूं, और शब्दकोश <> के आकार को सीमित करके अच्छा प्रदर्शन कर सकता हूं, या तो आकार या प्रविष्टियों की संख्या में।
ऐसा करने का सबसे अच्छा तरीका क्या है? क्या एक और वर्ग है जो मुझे एक शब्दकोश के अलावा अन्य पर विचार करना चाहिए?सी # शब्दकोश प्रदर्शन
उत्तर
कई अन्य वर्गों आप आप System.Collections.Generic नाम स्थान को देखकर विकल्पों की समीक्षा कर सकते हैं
तरहसे चुन सकते हैं कर रहे हैं।
उनकी एक बहुत अच्छा पोस्ट, describibg पेशेवरों और संग्रह कक्षाओं के सभी अधिकांश के लिए विपक्ष MSDN
आप इन कक्षाओं क्या प्रदान कर रहे हैं से संतुष्ट नहीं हैं, तो पर है, तो आप अपने स्वयं के संग्रह वर्ग के लिए जा सकते हैं या अपने स्वयं के custom Dictionary
डिज़ाइन कर सकते हैं।
आपको अपने कस्टम डिक्शनरी फ्रोन आईडीकी इंटरफेस और अन्य कक्षाओं/इंटरफेस का उत्तराधिकारी होना होगा या सभी स्क्रैच से लिख सकते हैं।
यहाँ MSDN
[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Dictionary<TKey, TValue> : IDictionary<TKey, TValue>,
ICollection<KeyValuePair<TKey, TValue>>,
IEnumerable<KeyValuePair<TKey, TValue>>,
IDictionary, ICollection, IEnumerable,
ISerializable, IDeserializationCallback
आपको अच्छे प्रदर्शन को प्राप्त करने के लिए शब्दकोश के आकार को सीमित करने की आवश्यकता नहीं है।
प्रलेखन कहते हैं:
इसकी कुंजी है का उपयोग करके एक मूल्य प्राप्त कर रहा है बहुत तेजी से, हे के पास (1) को ध्यान में रखना
आप शब्दकोश असीम बढ़ने की अनुमति है, तो आप अपने सभी पता स्मृति का उपयोग हवा कर सकते हैं। हार्डवेयर पर निर्भर करते हुए, आप इससे पहले लंबे समय से स्वैपिंग के कारण प्रदर्शन समस्याओं को प्रभावित कर सकते हैं या नहीं भी कर सकते हैं। –
एक बात है कि जब आप प्रारंभ है एक शब्दकोश आप प्रारंभिक क्षमता निर्धारित कर सकते हैं। यदि आप जानते हैं कि आपकी सूची कितनी बड़ी होगी, तो इसे सही आकार में सेट करें और आपके पास "बर्बाद" स्थान नहीं होगा। यदि आप क्षमता निर्दिष्ट नहीं करते हैं, तो यह एक डिफ़ॉल्ट प्रारंभिक क्षमता निर्धारित करेगा और आवश्यकतानुसार आकार/आकार बढ़ाएगा, जो प्रदर्शन हिट लेता है।
आप शब्दकोश वर्ग से इनहेरिट अपने ही वर्ग बनाने की आवश्यकता होगी पर Dictionary class के लिए हस्ताक्षर है। प्रविष्टियों की संख्या को सीमित करने के लिए प्रविष्टियों की संख्या को सीमित करने के लिए जोड़ें और सेट आइटम विधियों को ओवरराइड करें।
"एक समाप्ति नीति के बिना एक कैश सिर्फ एक स्मृति रिसाव है।"
(क्षमा करें, को असंबद्ध के रूप में मैं नहीं पता है जो पहली बार यह कहा।)
कैश में एक गैर-स्लाइडिंग समाप्ति नीति है, और एक निर्भरता है, बस यह सुनिश्चित करना चाहते हैं कि यह समाप्ति विंडो में बहुत बड़ा न हो। – derek
- 1. शब्दकोश। गणना प्रदर्शन
- 2. सुपर उच्च प्रदर्शन सी/सी ++ हैश नक्शा (तालिका, शब्दकोश)
- 3. एफ # FSharpMap बनाम शब्दकोश प्रदर्शन
- 4. शब्दकोश सी #
- 5. सी # Shallow कॉपी शब्दकोश?
- 6. एक सी # शब्दकोश
- 7. पाइथन शब्दकोश को सी ++
- 8. सी # शब्दकोश समानता आवश्यकता
- 9. सी # अजगर शब्दकोश सिंटेक्स
- 10. सी # ऐरे या शब्दकोश?
- 11. सी # शब्दकोश मेमोरी प्रबंधन
- 12. सी # एरे का शब्दकोश
- 13. सी # विलय 2 शब्दकोश
- 14. सी # शब्दकोश को देखो
- 15. सी ++ प्राथमिकता शब्दकोश
- 16. शब्दकोश
- 17. सी # में दो शब्दकोश तुलना
- 18. उद्देश्य-सी शब्दकोश एक बूल
- 19. सी # शब्दकोश प्रारंभकर्ता संकलन विसंगति
- 20. सी # बाइनरी पेड़ और शब्दकोश
- 21. स्पष्टीकरण और एक सी # शब्दकोश
- 22. क्या कुंजी की लंबाई शब्दकोश प्रदर्शन को प्रभावित करती है?
- 23. सी # कास्टिंग प्रदर्शन निहितार्थ
- 24. सी ++/सीएलआई प्रदर्शन?
- 25. सी/पायथन सॉकेट प्रदर्शन?
- 26. सी ++ स्मार्ट पॉइंटर प्रदर्शन
- 27. सी # 'रेफरी' कीवर्ड, प्रदर्शन
- 28. सी # दशमलव डेटाटाइप प्रदर्शन
- 29. डब्ल्यूपीएफ सी # अनुप्रयोग प्रदर्शन
- 30. प्रदर्शन लाभ/सी ++
मुझे सॉर्ट करने की कोई आवश्यकता नहीं है। शब्दकोश मेरे लिए अच्छा काम करता है क्योंकि मैं कुंजी द्वारा मूल्य प्राप्त कर सकता हूं। मेरी मुख्य चिंता यह है कि शब्दकोश का आकार बढ़ सकता है। – derek
मैंने आपको देखने के लिए कुछ और विकल्प दिए हैं। अपने खुद के शब्दकोश को क्यों न लें और अपने पसंदीदा नियमों को 'सही' क्यों करें? –
महान लिंक। ऐसा लगता है कि मुझे एक कस्टम क्लास बनाना होगा। – derek