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++ 中,与标准输入/输出相关的流 ...
随机推荐
- CM005-逆向分析过程(上篇)
前言 005,都说比较变态,很多人给放过去了,但是我还是决定上了它,既然变态就分两篇,上篇先实际说流程,到底应该怎么上它,下篇会告诉逆向分析的过程和方法 准备 [环境和工具] win7/xp虚拟机环境 ...
- 了不起的Node.js--之四
阻塞与非阻塞IO 绝大多数对node.js的讨论都把关注点放在了其处理高并发的能力上.Node框架给开发者提供了构建高性能网络应用的强大能力. 我使用的开发工具是Mac版的WebStorm,这个工具支 ...
- Bootstrap 样式设计 栅格系统
.col-xs- 超小屏幕 手机 (<768px) .col-sm- 小屏幕 平板 (≥768px) .col-md- 中等屏幕 桌面显示器 (≥992px) .col-lg- 大屏幕 大桌面显 ...
- 《Linux内核设计与实现》 第三周 读书笔记
第一章 Linux内核简介 1. Unix的历史 Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它是现存操作系统中最强大和最优秀的系统. Unix强大的根本原因: 简洁 在Unix中所有的东西都被 ...
- wordpress学习四: 一个简单的自定义主题
在学习三里分析了自带的一个例子,本节我们就自己仿照他做个简单的吧,重点是调用wordpress封装好的函数和类,css和html可以稍好在调整. 将wp带的例子复制一份处理,重新名个名字. 清空ind ...
- “数学口袋精灵”App的第一个Sprint计划----开发日记
“数学口袋精灵”第一个Sprint计划----第一天 项目进度: 1.我们在商量这我们的初步想法,考虑要选择做算数的软件还是做关于摄影O2O APP的开发(推荐).每个人会去上网百度浏览了解这两个项目 ...
- Alpha版本事后诸葛亮
目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结: 本小组和其他组的评分 分工和贡献分 全组讨论的照片 问题 第一组提问回答:爸爸饿了队 第二组提问回答:拖 ...
- 第九周PSP&进度条
PSP 一.表格: D日期 C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 11月11号 讨论 讨论beta发布 09:00 09:54 1 ...
- 【Leetcode】222. Count Complete Tree Nodes
Question: Given a complete binary tree, count the number of nodes. Definition of a complete binary t ...
- asp、asp.net、.aspx、.ascx、.ashx的简单说明
ASP是动态server页面(Active Server Page)的英文缩写.[1]是微软公司开发的取代CGI脚本程序的一种应用.它能够与数据库和其他程序进行交互,是一种简单.方便的编程工具.ASP ...