আমি কয়েকটি মাল্টি-গিগাবাইট পাঠ্য ফাইলের সাথে কাজ করছি এবং পাওয়ারশেল ব্যবহার করে সেগুলি নিয়ে কিছু স্ট্রিম প্রসেসিং করতে চাই। এটি সহজ স্টাফ, কেবল প্রতিটি লাইনকে বিশ্লেষণ করে এবং কিছু ডেটা বের করে, তারপরে এটি একটি ডাটাবেসে সঞ্চয় করে।
দুর্ভাগ্যক্রমে, get-content | %{ whatever($_) }
পাইপের এই পর্যায়ে সম্পূর্ণ রেখাগুলি মেমরির মধ্যে রাখতে দেখা যায়। এটি আশ্চর্যজনকভাবে ধীরে ধীরে, আসলে এটি সমস্ত কিছু পড়তে খুব দীর্ঘ সময় নেয়।
সুতরাং আমার প্রশ্ন দুটি অংশ:
- আমি কীভাবে এটিকে স্ট্রিম লাইনটি রেখার মাধ্যমে প্রক্রিয়াকরণ করতে এবং পুরো জিনিসটিকে মেমরিতে বাফার না করে রাখতে পারি? আমি এই উদ্দেশ্যে র্যামের কয়েকটি জিগ ব্যবহার করা এড়াতে চাই।
- আমি কীভাবে এটি দ্রুত চালাতে পারি? পাওয়ারশেল পুনরুক্তি করা
get-content
একটি সি # স্ক্রিপ্টের চেয়ে 100x ধীর গতির বলে মনে হচ্ছে।
আমি আশা করছি এখানে বোবা কিছু করছি, যেমন -LineBufferSize
প্যারামিটার বা কিছু হারিয়ে যাওয়া ...
get-content
বাড়ানোর জন্য, 512 এ রিডকাউন্ট সেট করুন Note নোট করুন যে এই মুহুর্তে, ফরচ এ $ _ স্ট্রিংগুলির একটি অ্যারে হবে।