यहां स्थिति है:
मेरे पास सूची है जो वास्तव में संख्याओं को स्टोर करती है और बहुत बड़ी हो सकती है (लाखों आइटम)।
मैं संख्याओं को स्ट्रिंग के रूप में संग्रहीत करता हूं क्योंकि पाठ की कुछ अतिरिक्त जानकारी प्रदर्शित करने का विकल्प होता है।स्थानांतरित करने के साथ सूची का प्रबंधन करने का सबसे अच्छा तरीका
क्योंकि स्टोर करने के लिए बहुत सारी मेमोरी लेती है, मैंने फैसला किया कि मैं केवल अधिकतम 5 मिलियन आइटम स्टोर करूंगा। (इसमें केवल 250-300 एमबी लगेगा)।
सूची गणना के आउटपुट से भरा है। यदि कोई संख्या पाई जाती है तो इसे सूची में जोड़ा जाएगा, यह संख्या मौजूदा वस्तुओं की तुलना में हमेशा बड़ी है।
जब सूची 5 मिलियन तक पहुंच गई तो मैं पहली वस्तु को हटाना चाहता हूं और सूची में नया आइटम जोड़ना चाहता हूं।
चाहते:
// Why is this so freaking slow???
if (_result.Count == 5000000)
_result.RemoveAt(0);
_result.Add(result);
आप टिप्पणी में पढ़ा सकते हैं, यह बहुत, बहुत, बहुत धीमी है। यह सिर्फ 15 बार मेरे प्रदर्शन में कटौती। इसमें 2 मिनट लग गए, अब इसमें लगभग 30.
मैंने .Skip(1).ToList
जैसे लिनक के साथ कुछ चीजों की कोशिश की लेकिन यह सूची को फिर से बनाएगा और इसलिए यह और भी धीमी है।
सूची सही क्रम में रहनी चाहिए, इसलिए इंडेक्स द्वारा ओवरराइटिंग एक विकल्प नहीं है (जब तक आप चारों ओर एक अच्छा काम समझा नहीं सकते)।
मेरा प्रश्न:
क्या ऐसा करने का कोई अच्छा तरीका है?
मुझे वास्तव में यहां प्रदर्शन की आवश्यकता है क्योंकि इसे 10000000000 नंबरों की जांच करने की आवश्यकता हो सकती है। यह एक दिन बिल्कुल लग सकता है, लेकिन एक महीने में थोड़ा बहुत ज्यादा :(है
, में अतिरिक्त जानकारी चाहिए पूछने के लिए स्वतंत्र महसूस हो रहा है, मैं की आपूर्ति करने में प्रसन्नता होगी
समाधान:।।
यह प्रदर्शन करती हे (1)
// Set the _result
Queue<object> _result = new Queue<object>(5000000);
/// Inside the method
// If the count has reach it's max, dequeue the first item
if (_result.Count == 5000000)
_result.Dequeue();
_result.Enqueue(result);
क्या कोई अनिवार्य कारण है कि आपको एक सूची का उपयोग करना है? क्या आप – swiftgp
@ user1556110 के बजाय SQLite डेटाबेस का उपयोग कर सकते हैं एप्लिकेशन किसी भी कंप्यूटर और मेमोरी में चलाने में सक्षम होना चाहिए, मुझे नहीं पता कि SQLite में यह संभव है या नहीं। – Mixxiphoid
@downvoter: समझाने की देखभाल? – Mixxiphoid