আমি সহজাত ক্যাটসুরার জবাবের সাথে একমত হইতাম; এটা বোঝা যায়। তবে এটি পরীক্ষা করা যথেষ্ট সহজ।
আমি স্ক্রিনে এক মিলিয়ন লাইন লেখার, কোনও ফাইলে লিখতে (সংযোজন করা) এবং এর দিকে পুনর্নির্দেশ পরীক্ষা করেছি /dev/null
। আমি এগুলির প্রত্যেকটি ঘুরে ফিরে পরীক্ষা করেছিলাম, তারপরে পাঁচটি প্রতিলিপি করেছি। এগুলি আমি ব্যবহার করা আদেশগুলি।
$ time (for i in {1..1000000}; do echo foo; done)
$ time (for i in {1..1000000}; do echo foo; done > /tmp/file.log)
$ time (for i in {1..1000000}; do echo foo; done > /dev/null)
আমি তারপরে নীচে মোট বার প্লট করেছি।
আপনি দেখতে পাচ্ছেন, স্যাট ক্যাটসুরার অনুমানগুলি সঠিক ছিল। স্যাট ক্যাটসুরার উত্তর অনুসারে, আমি সন্দেহও করি যে সীমাবদ্ধ ফ্যাক্টরটি আউটপুট হবে, সুতরাং আউটপুট নির্বাচনের স্ক্রিপ্টের সামগ্রিক গতিতে যথেষ্ট প্রভাব ফেলবে এমনটা সম্ভাবনা কম।
এফডাব্লুআইডাব্লু, আমার আসল উত্তরে আলাদা কোড ছিল, এতে লুপের ভিতরে ফাইল সংযোজন এবং /dev/null
পুনর্নির্দেশ করা হয়েছিল।
$ rm /tmp/file.log; touch /tmp/file.log; time (for i in {1..1000000}; do echo foo >> /tmp/file.log; done)
$ time (for i in {1..1000000}; do echo foo > /dev/null; done)
জন কুগেলম্যান মন্তব্যগুলিতে যেমন উল্লেখ করেছেন, এটি প্রচুর ওভারহেড যুক্ত করে। যেহেতু প্রশ্নটি দাঁড়িয়েছে, এটি পরীক্ষা করার পক্ষে এটি সঠিক উপায় নয় তবে আমি এটি এখানে রেখে দেব কারণ এটি স্পষ্টতই স্ক্রিপ্টের মধ্যে থেকে বারবার কোনও ফাইল পুনরায় খোলার ব্যয় দেখায় ।
এই ক্ষেত্রে, ফলাফলগুলি বিপরীত হয়।