在执行一些测试后,我注意到它printf比cout。我知道它取决于实现,但是在我的Linux机器上printf要快8倍。所以我的想法是混合两种打印方法:我想cout用于简单的打印,我计划printf用于产生巨大的输出(通常是循环的)。我认为这样做是安全的,只要我不忘记在切换到其他方法之前先冲洗即可:cout << "Hello" << endl;cout.flush();for (int i=0; i<1000000; ++i) { printf("World!\n");}fflush(stdout);cout << "last line" << endl;cout << flush;这样可以吗更新:感谢您的宝贵意见。答案摘要:如果要避免棘手的解决方案,只需不使用endl,cout因为它会隐式刷新缓冲区。使用"\n"代替。如果您产生大量输出,可能会很有趣。
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
另外,请注意,C ++流已同步到C流。
因此,它需要付出额外的工作来保持同步。
还要注意的另一件事是确保您冲洗流的数量相等。如果您在一个系统上连续冲洗流而不是在另一个系统上冲洗流,则肯定会影响测试速度。
在假设一个比另一个更快之前,您应该:
从CI / O取消同步C ++ I / O(请参见sync_with_stdio())。
确保冲洗量可比。
添加回答
举报
0/150
提交
取消