আমার দ্রুত কিছু ডেকম্প্রেশন প্রোগ্রাম বেনমার্ক করার একটি ধারণা ছিল। যেমন জিজেডের জন্য, আমি কমান্ডটি চালিত করব:
timeout 10 zcat foo.gz | wc -c
যেটি 10 সেকেন্ডের মধ্যে ডিকম্প্রেসারটি বের করতে পারে এমন পরিমাণের পরিমাণ পরিমাপ করবে।
একমাত্র সমস্যাটি হ'ল এটি কার্যকর হয় না: যেমন zcat নিহত হয়, ডব্লিউসিও মারা যায়, তাই আমি বাইট গণনাটি পাই না, কেবল একটি Terminated
বার্তা।
সুতরাং, প্রশ্নটি হ'ল: ডাব্লিউসি থেকে গণনা পাওয়ার কোনও উপায় আছে , হয় কোনওভাবে সিগন্যালটি ব্লক করে, বা ডাব্লাবির পরিবর্তে একটি বিকল্প ব্যবহার করুন যা কোনও মেয়াদ সংকেত পেয়েও ফলাফল ছাপায়।
অবশ্যই, বিকল্প আছে:
একটি অস্থায়ী ফাইলে লেখা:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
এটির সাথে সমস্যাটি হ'ল প্রচুর মেমরি ব্যবহার করা হয় এবং এতে কিছু পারফরম্যান্স পেনাল্টিও থাকতে পারে।পরিবর্তে ইউলিমিট ব্যবহার করা:
ulimit -t 10; zcat foo.gz | wc -c
এটিও কাজ করে তবে কেবল সিপিইউর সময় পরিমাপ করে, তাই আই / ও এর কারণে ধীরগতি হয় (উদাহরণস্বরূপ কারণ সংক্ষেপণটি আরও খারাপ, এবং আরও বাইটগুলি ডিস্ক থেকে পড়তে হবে) পরিমাপ করা হয় না।ছোট টেস্ট ফাইল তৈরি করা:
আচ্ছা, এটি অবশ্যই কাজ করতে পারে এবং সর্বোত্তম সমাধান হতে পারে। তবে এটি প্রচুর অস্থায়ী ফাইল তৈরি করে।