C++ ios :: out文件流标志:为什么它会影响性能?

Joe*_* M. 2 c++ out filestream ios

我的程序正在将uint16_t的大数字(每次250,000)写入文件.出于某种原因,设置ios :: out标志(不必要,因为VS2010会自动设置它)导致性能下降大约10倍.(见前/后).知道设置那个可能导致如此巨大性能差异的标志是什么意思吗?

之前:

fileoutput.flags(ios::out); 
Run Code Online (Sandbox Code Playgroud)

之前

后:

//fileoutput.flags(ios::out);  
Run Code Online (Sandbox Code Playgroud)

后

Big*_*oss 5

flags应该用来设置流的格式标志,例如输出是左对齐还是右对齐,或者布尔值应该打印为数字或字符串,所以你不能用它来设置流的开放模式,实际调用fileoutput.flags(std::ios::out)是一个调用参数无效.并且可能的错误原因在于您的实现值std::ios::out等于std::ios::unitbuf导致每次插入的缓冲区刷新,这肯定会导致巨大的性能损失.