मैं सहज रूप से सतो कातसुरा के उत्तर से सहमत होता; यह समझ में आता है। हालांकि, यह परीक्षण करने के लिए काफी आसान है।
मैंने स्क्रीन पर एक लाख लाइनें लिखने, एक फ़ाइल पर लिखने (एपेंडिंग) का परीक्षण किया, और इसके लिए रीडायरेक्ट किया /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)
फिर मैंने नीचे कुल बार प्लॉट किया।
जैसा कि आप देख सकते हैं, Satō Katsura के अनुमान सही थे। सात्सु कटसुरा के उत्तर के अनुसार, मुझे यह भी संदेह है कि सीमित कारक आउटपुट होगा, इसलिए यह संभावना नहीं है कि आउटपुट की पसंद का स्क्रिप्ट की समग्र गति पर पर्याप्त प्रभाव पड़ेगा।
एफडब्ल्यूआईडब्ल्यू, मेरे मूल उत्तर में अलग कोड था, जिसमें लूप के अंदर फ़ाइल को जोड़ना और /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)
जैसा कि जॉन कुगेलमैन टिप्पणियों में बताते हैं, यह बहुत अधिक उपरि जोड़ता है। जैसा कि प्रश्न खड़ा है, यह वास्तव में इसे जांचने का सही तरीका नहीं है, लेकिन मैं इसे यहां छोड़ दूंगा क्योंकि यह स्क्रिप्ट के भीतर से किसी फ़ाइल को बार-बार खोलने की लागत को स्पष्ट रूप से दिखाता है।
इस मामले में, परिणाम उलट हैं।