为了账号安全,请及时绑定邮箱和手机立即绑定

混合cout和printf以获得更快的输出

混合cout和printf以获得更快的输出

白衣非少年 2019-10-25 15:08:41
在执行一些测试后,我注意到它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())。

  • 确保冲洗量可比。


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 951 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信