簡體   English   中英

C ++ ios :: out文件流標志:為什么它會影響性能?

[英]C++ ios::out file stream flag: Why does it affect performance?

我的程序正在將uint16_t的大數字(一次250,000)寫入文件。 出於某種原因,設置ios :: out標志(不必要,因為VS2010會自動設置它)導致性能下降大約10倍。 (見前/后)。 知道設置那個可能導致如此巨大性能差異的標志是什么意思嗎?

之前:

fileoutput.flags(ios::out); 

之前

后:

//fileoutput.flags(ios::out);  

后

flags應該用於設置流的格式標志,例如輸出是左對齊還是右對齊,或者布爾值應該打印為數字或字符串,因此您不能使用它來設置流的打開模式並實際調用fileoutput.flags(std::ios::out)是一個帶有無效參數的調用。 並且錯誤的可能原因在於你的std::ios::out實現值等於std::ios::unitbuf ,這會導致每個插入的緩沖區刷新,這肯定會導致巨大的性能損失。

flags函數不設置一個標志。 它會立即更改所有標志。 要修改一個標志,您應該使用setf / unsetf。

暫無
暫無

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

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