C++ 输入输出(cin cout)加速/效率优化
目录
- 一、cin 和 cout 效率低下的原因
- 二、解决方案
- 1. ios::sync_with_stdio(false);
- 2. cin.tie(NULL);cout.tie(NULL);
一、cin 和 cout 效率低下的原因
在做算法题的时候,最近遇到很奇怪的问题:命名算法的复杂度不是很高,粗略计算是能通过的,但总是显示超时,检查算法也没问题,当把输入输出换成 scanf
和 printf
后就莫名其妙地能通过了。后面查找文档才发现,原来C++的 cin
和 cout
虽然使用方便灵活,但是有坑,在输入输出效率上远远小于 scanf
和 printf
,在一些大数据频繁读取输出的时候就显得十分耗时。
原因在于: 相比于 scanf
和 printf
,C++中的 cin
和 cout
因为要把输入输出的数据通过一个流缓冲区来同步C的 scanf
和 printf
,以至于当 scanf
和 printf
以及 cin
和 cout
同时使用时不发生混乱。
二、解决方案
#include <iostream>
using namespace std;int main() {// 关闭输入输出缓存,使效率提升ios::sync_with_stdio(false);// 解除cin和cout的默认绑定,来降低IO的负担使效率提升cin.tie(NULL); cout.tie(NULL);... return 0;
}
1. ios::sync_with_stdio(false);
通过关闭输入输出缓存,即像 scanf
和 printf
一样直接进行,可大大提升输入输出效率。其次,在输出时使用 \n
来进行换行,避免使用 endl
也可提升输出效率。
注意: 当设置为
false
时,cin
就不能和scanf
,sscanf
,getchar
,fgets
等同时使用。
2. cin.tie(NULL);cout.tie(NULL);
解除 cin
和 cout
运行库层面的对数据传输的默认绑定。由于存在数据传输的默认绑定, cin
和 cout
在每次操作的时候(也就是调用”<<”或者”>>”)都要刷新(调用flush),这样增加了IO的负担。通过解除绑定,可提高输入输出效率。
C++ 输入输出(cin cout)加速/效率优化相关推荐
- ACM C++ cin cout 加速IO
#include <iostream> int main() {std::ios::sync_with_stdio(false);//这句话放在main里面的开始位置,就可以加速cin c ...
- C++流式输入输出加速 给 cin/cout 装个小火箭
C++流式输法加速 文章目录 C++流式输法加速 1. sync_with_stdio 和 endl 1.1 cin/cout 1.2 endl 2. cin.tie(0) External 相信很多 ...
- C++输入输出:cin/cout 还是 scanf/printf?
相信使用C++的人都有一种迷惑或者是不自信:在输入输出的时候是不是应该使用scanf/printf更好呢,因为传说cin/cout龟速,我当时也长期被这个所困扰,后来在阅读C++ primer第五版的 ...
- OpenCV程序效率优化方法1
OpenCV程序效率优化方法 使用指针方法遍历像素点 OpenCV中图像的存储对象为Mat类,该类提供了多种方式访问像素的的值.一般来说分为以at方法类与ptr指针的方式访问,相较之下使用指针ptr的 ...
- 跳点搜索算法 (JPS算法) 效率优化(摘录)
摘自:腾讯游戏开发精粹(摘录一次加深记忆方便查找, 并未盈利,如有侵权 联系作者删除) 如感兴趣,请购买原书支持 谢谢配合 JPS主体思路: 表现上 JSP算法比A* 快很多, 实际上快到哪里了.我们 ...
- Linux实战教学笔记36:PHP服务缓存加速深度优化实践
一,PHP缓存加速器介绍与环境准备 1.1 PHP缓存加速器介绍 1.1.1 操作码介绍及缓存原理 当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Ope ...
- C++入门之cin cout
C++入门之cout语句 1.认识cin和cout c++中常用的输入输出语句有 "scanf" "printf" 和 "cin" &quo ...
- 为你的应用加速 - 安卓优化指南
为你的应用加速 - 安卓优化指南 原则 每当我遇到性能问题,或者尝试发现性能问题的时候,我会遵循如下原则: 坚持性能测试 - 不要用你的眼睛去优化性能.也许在你盯着同一个动画看了几次之后,你会开始相信 ...
- 广域网加速及优化解决方案
广域网加速及优化解决方案能够在以下领域帮助您的公司或机构更好的利用带宽,降低成本,提高工作效率,增加销售和利润: 动态网站加速解决方案 适用于社交网站,博客,B2C/B2B 服务网站, 网络游戏, 和 ...
最新文章
- 天线决定接受频率_对讲机天线到底有多重要?通讯效果好不好要靠它!
- 禁止linux关机,如何在Linux中禁用关机和重新启动命令
- DropDownList控件
- SharePoint 2010设置问卷调查权限
- 安装驱动器于当前运行的windows驱动器不能相同_如何预防硬盘故障?5个迹象表明硬盘驱动器即将故障...
- 引用一个项目作为library的操作步骤---开发中遇到的问题(二)
- python带参装饰器的改良版
- CERC2017 Gambling Guide,最短路变形,期望dp
- Spring MVC和Thymeleaf:如何从模板访问数据
- .NET 二维码生成(ThoughtWorks.QRCode)
- P1414 又是毕业季II (80分 python3实现)
- go get如何删除_Go语言HTTP请求(req库)
- 信用评分python_信用评分卡模型在Python中实践(上)
- python 实现冒泡排序
- linux启动报错23修复
- linux 显示数字权限,Linux数字权限解释
- vue/uniapp 百度统计埋点
- 常用串口调试工具比较(详细)
- docker 自动签到模板制作
- 人人商城php环境,关于微擎人人商城互动直播通信服务安装和启动教程记录