[笔记]cin、cout与scanf、printf的效率差异对比分析

之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms、20ms,于是打开一个20ms的代码查看人家强在哪里。但结果研究了半天感觉差不多,于是想着应该不是算法的问题。然后又想到,网上提交的答案,大家都是用scanf和printf写的,而我用的cin cout,而这题的确需要大量的输入输出,于是就想着把所有cin cout改成scanf printf。结果 —。—
这里写图片描述
上面c++版,下面c版。
于是我很好奇C的输入输出方法和C++提倡的方法为什么差距那么大。经过一番研究和查询,结果如下:
首先是scanf和cin:
cin之所以慢,主要是因为要与scanf同步的关系,即允许scanf与cin混用。但是如果你的代码里没用到scanf,那么想关闭同步也可以。
只要使用这行代码,就可关闭同步:std::ios::sync_with_stdio(false);
关闭同步后的cin效率大大提高。有人说比scanf还高,有人说差不多,网上评论不一。其实cin关闭同步后真正的效率如何还是依赖编译器。下面这篇博文很详尽地比较了cin和关闭同步的cin和scanf:https://www.byvoid.com/blog/fast-readfile 。看完这篇基本就可以了解性能上的差异了,编译器占的因素蛮大的。那么关了同步的cin与scanf差不多,但是cin是新标准,更安全更便捷。况且string只能用cin。
然后是printf和cout:
对于cout和printf,则效率差异不明显。有人认为流更快有人认为printf快,逛论坛查询时看到他们都吵起来了。具体怎样我又找到一篇博文:http://www.cnblogs.com/killerlegend/p/3918452.html 。他的结论是:输出时尽量使用cout,输入时尽量使用scanf。不过我也测试了,试了点最简单的:

int main()
{clock_t a, b;a = clock();for (int i = 0;i < 29999;++i)cout << i << '\n';b = clock();cout << b - a;return 0;
}

int main()
{clock_t a, b;a = clock();for (int i = 0;i < 29999;++i)printf("%d\n",i);b = clock();printf("%d",b - a);return 0;
}

结果是:cout用时6124,printf用时3536。cout比printf差了一倍不到。而且对于cout,那句“std::ios::sync_with_stdio(false);”其实是不起作用的,它只针对cin。于是我的结论与上面链接里的博文相反。
所以cout和printf效率可以说差不多,主要还是看编译器吧。使用时也不必纠结,只是cout毕竟新标准,更安全适用面更广更灵活。

最后:
本文讨论的输入输出使用仅仅针对ACM做题。scanf的确快,拿来做题还是很不错的。输入量少的话拿cin也毫无问题,刷个题目也没必要特地跑过去关闭同步。而且cin更安全更便捷,还支持重载。且对于string与自定义的数据,就只能用cin、cout没跑了。
对于我们这种有强迫症、选择恐惧症的,有两个方法给你自由选择也未必是个好事。不分分清楚心理难受哈哈。

转载于:https://www.cnblogs.com/xienaoban/p/6798095.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“智联网与未来”——第14届中国信息技术年会院士精彩观点辑录

来源&#xff1a;科技导报编者按 以智慧互联为目标的智联网系统是未来信息网络的发展方向&#xff0c;将引发人类社会向智慧社会的重大变革。在中国电子学会、工业和信息化部电子科学技术委员会等主办的第14届中国信息技术年会上&#xff0c;学者热议“智联网与未来”&#xf…

什么是java的元数据_学习大数据,为什么要先学习Java?

是新朋友吗&#xff1f;记得先点蓝字关注我哦&#xff5e;今日课程菜单Java全栈开发 | Web前端H5大数据开发 | 数据分析人工智能Python | 人工智能物联网来源&#xff1a;小职(z_zhizuobiao)找我&#xff1a;✅ 解锁高薪工作 ✅ 免费获取干货教程未完待续很多人初学的第一门语言…

记忆的天空:“崩塌型”记忆活动原理

作者&#xff1a;钟振余宁波大学副教授&#xff0c;工科背景&#xff0c;专注于脑科学神经信息活动机制研究。记忆是大脑活动原理的重要研究内容。相对于现代科学的高速发展&#xff0c;人类对于大脑活动原理的了解仍处在初级阶段。差不多半个多世纪之前&#xff0c;意识灵魂论…

飞天智能:阿里云的 AI 落地野心

来源&#xff1a;大叔爱吐槽CSDN当下&#xff0c;AI 业界不会否认的一个事实是&#xff0c;AI实力的比拼不再是单点的算法技术能力&#xff0c;而是从底层算法到应用平台的全面AI能力。单纯的算法&#xff0c;只是实验室里的乐趣&#xff0c;唯有结合商业的数据处理能力和技术变…

oracle把时间段转换成每一天_在家办公难适应?来看看专职外汇交易员的一天

万万没想到&#xff0c;曾经幻想的躺在床上把钱赚&#xff0c;居然成真了&#xff01;这不&#xff0c;受疫情的影响&#xff0c;不少人在家开工了&#xff01;今天是主流人群在家办公的第三天&#xff0c;然而&#xff0c;很多人表示&#xff1a;自己依然没有适应在家办公的节…

UVALive 7455 Linear Ecosystem (高斯消元)

Linear Ecosystem题目链接&#xff1a; http://acm.hust.edu.cn/vjudge/contest/127401#problem/B Description http://7xjob4.com1.z0.glb.clouddn.com/99b0fe905e5bd89a24c882832c93cc09 Input The first line of the input file contains an integer, n, which is the numbe…

华为诺亚方舟实验室—推荐系统中的前沿技术研究与落地报告

来源&#xff1a;专知【导读】9月6-7日&#xff0c;2019中国AI开发者大会&#xff08;AI ProCon 2019&#xff09; 在北京拉开帷幕。本次大会由新一代人工智能产业技术创新战略联盟&#xff08;AITISA&#xff09;指导&#xff0c;鹏城实验室、北京智源人工智能研究院支持&…

u盘锁电脑_程序员用U盘偷公司源码被抓;Rust 语言发布 5 周年

(给技术最前线加星标&#xff0c;每天看技术热点)综合整理&#xff1a;技术最前线(ID&#xff1a;TopITNews)参考&#xff1a;程序员的那些事、开源中国、solidot、cnBeta、腾讯科技等0、程序员用U盘偷公司源码被判刑2018年5月18日18时20分许&#xff0c;温某某在广州三七互娱科…

20幅漫画告诉你未来世界是怎样的

导读&#xff1a;在你心目中的&#xff08;不太遥远的&#xff09;未来是什么样的&#xff1f;名为Futurism Cartoons的作者绘制了一系列以“未来”为主题的漫画&#xff0c;其中多幅跟人工智能及你大数据有关&#xff0c;你们来感受一下……来源&#xff1a;大叔爱吐槽0102030…

c++ qt获取电脑的内存_Qt官方示例-TCP客户端/服务器示例

该示例演示了在本地主机上的TCP客户端和服务器是如何通讯的。客户端 绑定信号槽。connect(&tcpClient, &QAbstractSocket::connected, this, &Dialog::startTransfer); /* 连接到服务器时回送消息给服务器 */ connect(&tcpClient, &QIODevice::bytesWritte…

下一个10年,解决问题靠“大脑”

前言&#xff1a;本文是网络智库举办的《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》新书分享会记录&#xff0c;作者刘锋主讲&#xff0c;深入阐述了科技时代谷歌大脑&#xff0c;百度大脑&#xff0c;阿里大脑&#xff0c;腾讯大脑&#xff0c;城市大脑&#xf…

JavaMail发送邮件

使用javax.mail可以发送普通文本文件&#xff0c;HTML格式的文件&#xff0c;同样可以发送图文并茂(包含附件)的java邮件。 发送邮件需要在验证发送的邮箱和密码&#xff1a;验证的帐号(本人使用163邮件)需要打开POP3/SMTP/IMAP 设置邮箱授权登录密码(已设置好): 新建java项目添…

cf两边黑屏怎么解决win10_关闭自动睡眠仍然睡眠?Win10过几分钟就会自动睡眠黑屏解决方法...

近期有Win10网友遇到一个奇怪的问题&#xff0c;已经设置了关闭了睡眠&#xff0c;也设置了从不关闭显示器&#xff0c;但是大概2分钟-3分钟不动鼠标或者对电脑无操作的时候&#xff0c;电脑就会出现自动睡眠黑屏的情况&#xff0c;网友根据网上的解决这个问题相关帖子进行操作…

Word如何固定页面内容在某一页开头

在写论文时经常需要新起一页从第一行写新的一章&#xff0c;那么如何固定这一页的内容是从这一页第一行开始写的呢&#xff1f; 例如需要将参考文献放在新的一页中开始写&#xff0c;那么在上一页的最后位置插入“分隔符”→“分页符”即可

西门子plm_好事连连 西门子PLM新品多项合作并举

几乎是同一时间&#xff0c;西门子PLM集中发布了多项重磅解决方案&#xff0c;并与IBM联合推出服务生命周期管理解决方案。西门子与IBM联合推出的服务生命周期管理解决方案&#xff0c;能够将实际维护和资产性能与设计决策和现场修改动态结合&#xff0c;从而优化资产的服务生命…

win10亮度怎么调_笔记本屏幕亮度怎么调

大家好&#xff0c;今天分享一篇来自装机吧官网(zhuangjiba.com)的图文教程。许多网民发现&#xff0c;当他们的计算机在办公室时&#xff0c;计算机屏幕的亮度会变暗&#xff0c;其中一些代表了计算机电量不足的问题&#xff0c;或者存在计算机没有设置亮度的问题。虽然计算机…

小程序下拉刷新_微信小程序下拉刷新

下拉刷新是常用操作&#xff0c;微信已经集成好了&#xff08;真机效果稍有瑕疵&#xff09;首先需要在.json文件启用下拉刷新{"enablePullDownRefresh": true, }然后在.js文件&#xff0c;监听下拉操作&#xff0c;处理loading和请求onPullDownRefresh() {wx.showNa…

牛津大学名誉教授Colin Blakemore:大脑是如何计算的?

智慧起航&#xff0c;共创未来【导读】9月21日&#xff0c;英国皇家学会会士、中国工程院外籍院士、香港城市大学教授、牛津大学名誉教授Colin Blakemore在第二届中国认知计算与混合智能学术大会&#xff08;CCHI2019&#xff09;作了报告——大脑是如何计算的? Colin教授的主…

表单和iframe的使用

图片热点&#xff1a; 规划出图片上的一个区域&#xff0c;可以做出超链接&#xff0c;直接点击图片区域就可以完成跳转的效果。示例&#xff1a; 网页划区&#xff1a; 在一个网页里&#xff0c;规划出一个区域用来展示另一个网页的内容。示例&#xff1a; 网页的拼接&#xf…

python计算熵

熵的计算公式&#xff1a; p(x)为概率&#xff0c;全部概率之和为1 假设 probs是网络输出的n分类预测概率&#xff0c;尺寸为[batch_size,n]&#xff0c;那么预测熵的计算代码如下&#xff1a; log_probs np.log2(probs) shang -1 * np.sum(probs * log_probs, axis1)