ในส่วนนี้เราจะมาดูกันว่าอะไรคือความแตกต่างระหว่าง cout <
เหตุใดเราจึงควรหลีกเลี่ยง std::endl ขณะพิมพ์บรรทัดลงในคอนโซลหรือไฟล์ เราใช้ std::endl สำหรับสร้างขึ้นบรรทัดใหม่หลังบรรทัดปัจจุบัน สำหรับการดำเนินการ IO สองสามบรรทัด จะไม่สร้างปัญหาใดๆ แต่สำหรับงาน IO จำนวนมาก ประสิทธิภาพการทำงานจะลดลง
endl ใช้เพื่อสร้างบรรทัดใหม่ แต่ไม่ได้ส่งไปยังบรรทัดใหม่เท่านั้น หลังจากส่งเคอร์เซอร์ไปยังบรรทัดถัดไป มันจะล้างบัฟเฟอร์ในแต่ละครั้ง
การล้างบัฟเฟอร์ไม่ใช่งานของโปรแกรมเมอร์ ระบบปฏิบัติการเป็นผู้รับผิดชอบ แต่ละครั้งที่ร้องขอให้ล้างข้อมูล จะร้องขอไปยังระบบปฏิบัติการ คำขอนี้ค่อนข้างแพง และเราไม่จำเป็นต้องล้างบัฟเฟอร์ทุกครั้งหลังจากเขียนบางบรรทัด สตรีม IO จะล้างบัฟเฟอร์โดยอัตโนมัติเมื่อเต็ม
หากเราวิเคราะห์เวลาที่จำเป็นในการเขียนข้อความเกือบ 100,000 บรรทัดลงในไฟล์โดยใช้ std::endl และการใช้ '\n' เราจะเห็นความแตกต่างได้อย่างง่ายดาย โค้ดที่ใช้ std::endl นั้นใช้เวลามากกว่าสองเท่าในการทำงานให้เสร็จ เมื่อเทียบกับการใช้ '\n' หลังจากนั้น