前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提高标准输入输出流的速度

提高标准输入输出流的速度

作者头像
努力努力再努力F
发布2019-12-24 11:19:02
7420
发布2019-12-24 11:19:02
举报
文章被收录于专栏:fangyangcoderfangyangcoder

在刷leetcode时,看到前面快的solution加上了如下代码:

代码语言:javascript
复制
static int __ = [](){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    return 0;
}();

自己加上后,发现速度提升不少,百度查了一下,上面避免了两个因素。

std::ios::sync_with_stdio(false);

iostream默认是与stdio关联在一起的,以使两者同步,因此消耗了iostream不少性能。C++中的std :: cin和std :: cout为了兼容C,保证在代码中同时出现std :: cin和scanf或std :: cout和printf时输出不发生混乱,所以C++用一个流缓冲区来同步C的标准流。通过std :: ios_base :: sync_with_stdio函数设置为false后可以解除这种同步,让std :: cin和std :: cout不再经过缓冲区,iostream的性能就会提高了很多倍。因此,当解除同步之后,注意不要与scanf和printf混用以免出现问题。[1]

std::cin.tie(nullptr);

std :: cin默认是与std :: cout绑定的,所以每次操作的时候(也就是调用”<<”或者”>>”)都要刷新(调用flush),这样增加了IO的负担,通过tie(nullptr)来解除std :: cin和std :: cout之间的绑定,来降低IO的负担使效率提升。[2]

参考

【1】https://blog.csdn.net/Canger_/article/details/85787436 【2】https://blog.csdn.net/b__t__t/article/details/84868841

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • std::ios::sync_with_stdio(false);
  • std::cin.tie(nullptr);
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档