यह वास्तव में "कुशल" की आपकी परिभाषा पर निर्भर करता है।
यदि आप मेमोरी-कुशल का मतलब रखते हैं तो आप एक स्ट्रीम रीडर का उपयोग कर सकते हैं ताकि आपके पास एक समय में स्मृति में टेक्स्ट की एक पंक्ति हो, दुर्भाग्य से यह पूरी चीज को एक साथ में लोड करने से धीमा है और फ़ाइल को लॉक कर सकता है।
यदि आपका सबसे कम संभव समय में मतलब है, तो यह एक ऐसा कार्य है जो समांतर वास्तुकला से बहुत लाभ प्राप्त करेगा। फ़ाइल को टुकड़ों में विभाजित करें और प्रक्रिया के लिए प्रत्येक खंड को अलग थ्रेड पर पास करें। बेशक यह विशेष रूप से सीपीयू कुशल नहीं है, क्योंकि यह आपके सभी कोरों को उच्च स्तर के उपयोग पर रख सकता है।
यदि आप केवल कम से कम काम करने की तलाश में हैं तो क्या आप फ़ाइल के बारे में पहले ही जानते हैं? इसे कितनी बार अपडेट किया जाएगा? क्या प्रत्येक पंक्ति के पहले 10 अक्षर हमेशा समान होते हैं? यदि आपने पिछली बार 100 लाइनों को देखा तो क्या आपको उन पंक्तियों को फिर से स्कैन करने की आवश्यकता है? इनमें से कोई भी समय और स्मृति उपयोग दोनों के लिए बड़ी बचत कर सकता है।
दिन के अंत में कोई जादू बुलेट नहीं है, और फ़ाइल खोजने के लिए (सबसे खराब मामले में) ओ (एन) ऑपरेशन है।
क्षमा करें, बस इसे फिर से पढ़ें, और यह व्यंग्यात्मक के रूप में आ सकता है, और मेरा मतलब यह नहीं है। मेरा मतलब यह था कि एक क्षेत्र में आपके द्वारा किए गए किसी भी लाभ को कहीं और खोने की संभावना है और इन तरह की परिस्थितियों में "कुशल" एक बहुत संदिग्ध शब्द है।
स्रोत
2009-05-05 17:11:10
अच्छा विचार - हम इसे एक परियोजना में करते हैं और फिर भी मैं इसके बारे में भूल जाता हूं। –
बहुत अच्छा! मुझे लगता है कि मैं शायद इस दृष्टिकोण का उपयोग करूंगा। –
फ़ाइल को पुन: स्कैन करने के बजाए पिछले परिणाम को कैश करना न भूलें, अपनी खोज शुरू करें जहां आप उस लाइन में रहने की उम्मीद करते हैं और वहां से काम करते हैं। मुझे लगता है कि यह केवल तभी काम करेगा यदि आपकी फ़ाइल प्रत्येक पुनरावृत्ति के साथ इतना नहीं बदलेगी। हालांकि इसे थोड़ी देर बचा लेना चाहिए। –