मेरे पास स्ट्रिंग्स की एक सूची है जिसमें आकार 152 एमबी की टेक्स्ट फ़ाइल में लगभग 7 मिलियन आइटम हैं। मैं सोच रहा था कि एक फंक्शन को लागू करने का सबसे अच्छा तरीका क्या हो सकता है जो एक स्ट्रिंग लेता है और यह देता है कि यह तारों की सूची में है या नहीं।एक बड़ी पाठ फ़ाइल में एक स्ट्रिंग मिलान?
उत्तर
क्या आपको इस पाठ फ़ाइल के खिलाफ कई बार मिलान करना होगा? यदि ऐसा है, तो मैं HashSet<string>
बनाउंगा। अन्यथा, बस लाइन से इसे लाइन पढ़ें (मुझे लगता है कि प्रति पंक्ति एक स्ट्रिंग है) और देखें कि यह मेल खाता है या नहीं।
एएससीआईआई का 152 एमबी यूनिकोड डेटा के 300 एमबी के रूप में खत्म हो जाएगा - लेकिन आधुनिक मशीनों में बहुत मेमोरी है, इसलिए HashSet<string>
में पूरे लॉट को वास्तव में बार-बार लुकअप करना बहुत तेज़ होगा।
पूर्ण सरल यह करने के लिए जिस तरह से शायद, File.ReadAllLines
उपयोग करने के लिए हालांकि कि एक सरणी जो तब को छोड़ दिया जाएगा पैदा करेगा है - स्मृति के उपयोग के लिए महान नहीं है, लेकिन शायद बहुत बुरा नहीं:
HashSet<string> strings = new HashSet<string>(File.ReadAllLines("data.txt"));
...
if (strings.Contains(stringToCheck))
{
...
}
निर्भर करता है कि आप क्या करना चाहते हैं। जब आप बार-बार मैचों की खोज दोहराना चाहते हैं, तो मैं पूरी फ़ाइल को स्मृति में लोड करूंगा (HashSet
में)। मैचों के लिए खोजना बहुत आसान है।
- 1. स्ट्रिंग एक बड़ी फ़ाइल में php
- 2. एक बड़ी स्ट्रिंग
- 3. बड़ी फ़ाइल में स्ट्रिंग सम्मिलन
- 4. एक बड़ी फ़ाइल में खोजें और बदलें
- 5. एक बहुत बड़ी फ़ाइल
- 6. एक बड़ी बाइनरी फ़ाइल
- 7. एक बड़ी एक्सएमएल फ़ाइल
- 8. एक बड़ी एक्सएमएल फ़ाइल
- 9. डेल्फी: कैसे एक बड़ी फ़ाइल
- 10. एक पाठ स्ट्रिंग एक आयत
- 11. एक पाठ स्ट्रिंग
- 12. बंटवारे सेट आइटम में एक बड़ी स्ट्रिंग
- 13. स्टोर एक स्ट्रिंग या पाठ
- 14. एक पाठ फ़ाइल
- 15. एक बड़े पाठ फ़ाइल
- 16. एक पाठ फ़ाइल
- 17. सी एक पाठ फ़ाइल
- 18. बड़ी फ़ाइल में डुप्लिकेट स्ट्रिंग खोजें
- 19. पाइथन में एक बड़ी फ़ाइल (10 जीबी +)
- 20. एक स्ट्रिंग/फ़ाइल
- 21. एक बड़ी फ़ाइल या एकाधिक छोटी फाइलें?
- 22. एक टुपल मिलान एल्गोरिदम
- 23. एक बड़ी (+ - 1 जीबी) एक्सएमएल फ़ाइल
- 24. अजगर नियमित अभिव्यक्ति एक मिलान स्ट्रिंग
- 25. पीएचपी पाठ फ़ाइल में स्ट्रिंग जोड़े
- 26. एक पाठ फ़ाइल और कंसोल
- 27. एक छवि फ़ाइल में पाठ जोड़ना
- 28. एक सरणी में पाठ फ़ाइल पढ़ें
- 29. बैश में एक चर में एक पाठ फ़ाइल को बचाने
- 30. शक्तियों को बड़ी (बड़ी) फ़ाइल
असल में मुझे बार-बार खोजना है। लेकिन मैं इसे वेब एप्लिकेशन में उपयोग करने जा रहा हूं। क्या स्मृति कई अनुरोधों के साथ एक मुद्दा बन जाएगा? –
@ टाज़: अनुरोध की संख्या अप्रासंगिक है, जब तक आप केवल एक बार अपने हैशप को बनाते हैं :) दस्तावेज़ीकरण के अनुसार: * इस प्रकार के किसी भी सार्वजनिक स्थिर सदस्य थ्रेड सुरक्षित हैं *, इसलिए यहां कोई समस्या नहीं है, – tanascius
@Taz : tanascius सही है। इसे एक बार लोड करें और आपको किसी भी अतिरिक्त मेमोरी उपयोग के बिना खोज करने में सक्षम होना चाहिए (एकाधिक समवर्ती धागे का उपयोग करना, यहां तक कि जब तक कुछ भी लिख नहीं रहा हो)। जब तक आपके वेब सर्वर में सेट को पकड़ने के लिए पर्याप्त स्मृति हो, तब तक जाने का यह तरीका है। –