為什麼我們在C++中應該避免使用std::endl
在本節中,我們將瞭解為何在將行列印到控制檯或檔案中時,我們應該避免使用std::endl。我們使用std::endl在當前行後面建立一個新行。對於一些IO操作來說,它不會產生任何問題。但針對大規模IO任務,它會降低效能。
endl用於建立新行,但它不僅傳送到新行,而且在將游標傳送到下一行之後,每次都會重新整理緩衝區。
重新整理緩衝區不是程式設計師的任務,而是由作業系統負責。每次它要求重新整理時,就會向作業系統請求。這種請求比較昂貴。而且我們不需要在每次編寫一些行後都重新整理緩衝區。當緩衝區已滿時,IO流會自動清除它。
如果我們透過使用std::endl和使用'\n'分析將近100000行文字寫入檔案所需的時間,我們可以輕易看出兩者的區別。與在之後使用'\n'相比,使用std::endl的程式碼完成這項任務所需的時間大約為兩倍。
廣告