簡體   English   中英

為cout增加緩沖區

[英]increase buffer for cout

引用setbuf()會影響cout嗎?

我想增加緩沖區大小以提高cout的性能(通常會重定向到磁盤)

我可不可以做:

std::cout.rdbuf()->pubsetbuf(some_buffer, buffer_size);

並且

ios::sync_with_stdio(false);

這有意義嗎?

編輯:我也使用多個線程,所以我希望減少同步的需要。

我首先檢查一下將使任何更大的緩沖區大小無關的刷新次數。

特別是看,如果你的代碼中有很多cout << endl並嘗試用cout <<'\\ n'替換它們,如果你不需要endl的刷新效果。

作為最后的手段,在您嘗試“優化”之前尋找根本原因,例如嘗試使用strace或類似的工具來查看實際發生的系統調用的數量。 (我希望這對你的問題有幫助)。

只有,如果所有這些都已經被照顧,更大的緩沖區大小實際上可以幫助減少系統調用的數量。

cout輸出的另一個減慢是,它通常准備與多個線程同步輸出,即使你只使用一個線程。 這再次可以大大減慢I / O,因為沒有使用更大緩沖區的開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM