मैं कुछ मल्टी-गीगाबाइट टेक्स्ट फ़ाइलों के साथ काम कर रहा हूं और पॉवरशेल का उपयोग करके उन पर कुछ स्ट्रीम प्रोसेसिंग करना चाहता हूं। यह सरल सामान है, बस प्रत्येक पंक्ति को पार्स करना और कुछ डेटा बाहर निकालना, फिर इसे डेटाबेस में संग्रहीत करना।
दुर्भाग्य से, get-content | %{ whatever($_) }
स्मृति में पाइप के इस स्तर पर लाइनों के पूरे सेट को रखने के लिए प्रकट होता है। यह आश्चर्यजनक रूप से धीमा है, वास्तव में यह सब पढ़ने के लिए बहुत लंबा समय ले रहा है।
तो मेरा प्रश्न दो भागों में है:
- मैं इसे कैसे बना सकता हूं? मैं इस उद्देश्य के लिए RAM के कई गिग्स के उपयोग से बचना चाहूंगा।
- मैं इसे तेजी से कैसे चला सकता हूं? PowerShell से अधिक चलने वाला
get-content
एक C # स्क्रिप्ट की तुलना में 100x धीमा प्रतीत होता है।
मुझे उम्मीद है कि मैं यहाँ कुछ गूंगा कर रहा हूँ, जैसे कोई -LineBufferSize
पैरामीटर या कोई चीज़ गायब है ...
get-content
करने के लिए, सेट करें -RedCount को 512 पर। ध्यान दें कि इस बिंदु पर, फ़ॉरच में $ _ तार का एक सरणी होगा।