ฉันจะเห็นด้วยกับคำตอบของSatō Katsura โดยสัญชาตญาณ มันทำให้รู้สึก อย่างไรก็ตามมันง่ายที่จะทดสอบ
ผมทดสอบการเขียนล้านเส้นไปยังหน้าจอการเขียน (ท้าย) /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 นั้นถูกต้อง ตามคำตอบของSatō Katsura ฉันยังสงสัยว่าปัจจัย จำกัด จะเป็นผลลัพธ์ดังนั้นจึงไม่น่าที่การเลือกผลลัพธ์จะมีผลอย่างมากต่อความเร็วโดยรวมของสคริปต์
FWIW คำตอบเดิมของฉันมีรหัสแตกต่างกันซึ่งมีไฟล์ต่อท้ายและ/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)
เมื่อ John Kugelman ชี้ให้เห็นในความคิดเห็นสิ่งนี้จะเพิ่มค่าใช้จ่ายจำนวนมาก ตามที่คำถามยืนอยู่นี่ไม่ใช่วิธีที่ถูกต้องในการทดสอบจริง ๆ แต่ฉันจะทิ้งไว้ที่นี่เพราะมันแสดงให้เห็นถึงต้นทุนในการเปิดไฟล์ซ้ำ ๆ ซ้ำ ๆ จากภายในสคริปต์เอง

ในกรณีนี้ผลลัพธ์จะกลับรายการ