cin,cout,printf,scanf效率对比
From:http://www.cnblogs.com/killerlegend/p/3918452.html
Author:KillerLegend
Date:2014.8.17
杭电OJ之3233很简单的一个问题,谁知道一直提示我超时,超时,最后都快哭了,C++代码如下:
#include <iostream> #include <iomanip> using namespace std; int main() { int t,tmp,band,index=0; while(cin>>t>>tmp>>band) { if(t==0||tmp==0||band==0) break; double a,b,sum=0.0; for(int i=0;i<t;++i) { cin>>a>>b; sum+=a*(100-b)*0.01; } cout<<"Case "<<++index<<": "<<fixed<<setprecision(2)<<sum/band<<endl<<endl; } return 0; }
后来...将输入输出流换成了scanf和printf,结果就神奇的AC了...
#include <cstdio> int main() { int t,tmp,band,index=0; while(scanf("%d%d%d",&t,&tmp,&band)) { if(t==0||tmp==0||band==0) break; double a,b,sum=0.0; for(int i=0;i<t;++i) { scanf("%lf%lf",&a,&b); sum+=a*(100-b)*0.01; } printf("Case %d: %.2f\n\n",++index,sum/band); } return 0; }
这真是太让人伤心了...所以我打算测试一下cin和scanf,cout和printf:
cout测试:
#include <iostream> #include <cstdio> #include <time.h> using namespace std; int main() { freopen("in.conf","r",stdin); freopen("out.conf","w",stdout); clock_t t1,t2,t3,t4; t1 = clock(); for(int i=0;i<10000000;++i)cout<<i<<" "; t2 = clock(); cout<<"cin-time:"<<(double)(t2-t1)/CLOCKS_PER_SEC<<endl; return 0; }
结果:5.206s
printf测试:
#include <iostream> #include <cstdio> #include <time.h> using namespace std; int main() { freopen("in.conf","r",stdin); freopen("out.conf","w",stdout); clock_t t1,t2,t3,t4; t1 = clock(); for(int i=0;i<10000000;++i)printf("%d ",i); t2 = clock(); cout<<"cin-time:"<<(double)(t2-t1)/CLOCKS_PER_SEC<<endl; return 0; }
结果:6.202s
我们使用上面循环1千万次所产生的数据(78.89MB),用于下面读入时的测试数据:
使用cin读入:
#include <iostream> #include <cstdio> #include <time.h> using namespace std; int main() { freopen("out.conf","r",stdin); freopen("in.conf","w",stdout); clock_t t1,t2,t3,t4; t1 = clock(); int k; for(int i=0;i<10000000;++i)cin>>k; t2 = clock(); cout<<"cin-time:"<<(double)(t2-t1)/CLOCKS_PER_SEC<<endl; return 0; }
结果是38.507s
使用scanf读入:
#include <iostream> #include <cstdio> #include <time.h> using namespace std; int main() { freopen("out.conf","r",stdin); freopen("in.conf","w",stdout); clock_t t1,t2,t3,t4; t1 = clock(); int k; for(int i=0;i<10000000;++i)scanf("%d",&k); t2 = clock(); cout<<"cin-time:"<<(double)(t2-t1)/CLOCKS_PER_SEC<<endl; return 0; }
结果是4.204s
结果一览表:
结论:输出时尽量使用cout,输入时尽量使用scanf.
cin,cout,printf,scanf效率对比的更多相关文章
- cin/cout与scanf/printf的比较
转自http://www.cnblogs.com/penelope/articles/2426577.html cin .cout 基本说明: cin是标准输入流对象,代表标准输入设备(键盘), ...
- [笔记]cin、cout与scanf、printf的效率差异对比分析
之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...
- printf scanf cin cout的区别与特征
printf和scanf是c语言的输入输出,学习c++以后,自然是用cin cout这两个更简单的输入输出 printf scanf 都需要进行格式控制,比较麻烦,但优点是速度比较快,毕竟多做了一些事 ...
- 8-cin cout PK scanf printf(速度快慢问题对比)
我们在c++ 中使用cin cout很方便但速度很慢,导致有些题目用cin就超时而用scanf则就ac了,那到底改用谁? cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说 ...
- acdream B - 郭式树 (水题 卡cin,cout, 卡LL)
题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned ...
- golang 浮点数 取精度的效率对比
需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" " ...
- read()/fread()/mmap()执行效率对比
一. read()/fread()/mmap()执行效率对比 系统调用read.c: #include <sys/types.h> #include <sys/stat.h> ...
- openCV 和GDI画线效率对比
一. 由于项目需要,原来用GDI做的画线的功能,新的项目中考虑到垮平台的问题,打算用openCV来实现,故此做个效率对比. 二. 2点做一条线,来测试效率. 用了同样的画板大小---256*256的大 ...
- C++输入输出流 cin/cout 及格式化输出简介
C++ 可通过流的概念进行程序与外界环境( 用户.文件等 )之间的交互.流是一种将数据自源( source )推送至目的地( destination )的管道.在 C++ 中,与标准输入/输出相关的流 ...
随机推荐
- 一步一步来熟悉Akka.Net(一)
一步一步来熟悉Akka.Net(一) 标签(空格分隔): .netcore 分布式 一.不利flag 好久没写过文章了,翻开前几年写的博客,看到有两个目标"代码生成器"和&qu ...
- Unity接入监控摄像头
公网RTSP测试地址: rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov RTSP测试软件: EasyPlayerRTSP: https:// ...
- 三丰云使用记录--部署iis服务器
写在前面的话:看在我这么热心写使用推广记录,麻烦延长下使用天数,谢谢 官网地址:https://www.sanfengyun.com 三丰云是北京太极三丰云计算有限公司旗下网络服务品牌,十八年IDC ...
- kubeadm安装K8S单master双节点集群
宿主机:master:172.16.40.97node1:172.16.40.98node2:172.16.40.99 # 一.k8s初始化环境:(三台宿主机) 关闭防火墙和selinux syste ...
- Notes of Daily Scrum Meeting(12.18)
前期落下的进度我们会在周六周日赶一下,在编译课程设计中期测试之后集中处理项目中的问题. 今天的任务总结如下: 团队成员 今日团队工作 陈少杰 调试后端连接的部分,寻找bug 王迪 测试搜索功能,修改b ...
- 第一周:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
姓名:吕松鸿 学号:20135229 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...
- 实验---反汇编一个简单的C程序(杨光)
反汇编一个简单的C程序 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163 ...
- 第二阶段Sprint7
昨天:将“录制”及“保存”整合到一起,修复出现的Bug,使之能够正常运行. 今天:把视频录制整合到时间提醒里,实现视频提醒 遇到的问题:额,整进去直接就停止运行了..也没有报错..
- [软工课程博客] 求解第N个素数
任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...
- php环境搭建及入门
在php文件里,写入header('content-type:text/html;charset = uft-8'); <?php header('content-type:text/html; ...