这里说http://en.cppreference.com/"如果关闭同步,则允许C++标准流独立缓冲其I/O,在某些情况下,这可能会快得多。"
这些案例是什么?
如果您想要同步,您应该使用std::ios_base::sync_with_stdio(bool)
,它可以保证I/O库之间的缓冲区将被同步。这应该在任何I/O之前调用。
从一些测试来看,同步输出的性能似乎会受到严重影响。我们看到的情况是GCC和从stdin/到stdout的相对较小的卷I/O(读取/打印单个int、float、char*变量)。
显然,非同步的情况——速度快了几百倍(我不记得确切的值了,而且变化很大)。