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效率对比的更多相关文章

  1. cin/cout与scanf/printf的比较

    转自http://www.cnblogs.com/penelope/articles/2426577.html  cin .cout   基本说明: cin是标准输入流对象,代表标准输入设备(键盘), ...

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

    之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...

  3. printf scanf cin cout的区别与特征

    printf和scanf是c语言的输入输出,学习c++以后,自然是用cin cout这两个更简单的输入输出 printf scanf 都需要进行格式控制,比较麻烦,但优点是速度比较快,毕竟多做了一些事 ...

  4. 8-cin cout PK scanf printf(速度快慢问题对比)

    我们在c++ 中使用cin cout很方便但速度很慢,导致有些题目用cin就超时而用scanf则就ac了,那到底改用谁? cin慢是有原因的,其实默认的时候,cin与stdin总是保持同步的,也就是说 ...

  5. acdream B - 郭式树 (水题 卡cin,cout, 卡LL)

    题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned   ...

  6. golang 浮点数 取精度的效率对比

    需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" " ...

  7. read()/fread()/mmap()执行效率对比

    一. read()/fread()/mmap()执行效率对比 系统调用read.c: #include <sys/types.h> #include <sys/stat.h> ...

  8. openCV 和GDI画线效率对比

    一. 由于项目需要,原来用GDI做的画线的功能,新的项目中考虑到垮平台的问题,打算用openCV来实现,故此做个效率对比. 二. 2点做一条线,来测试效率. 用了同样的画板大小---256*256的大 ...

  9. C++输入输出流 cin/cout 及格式化输出简介

    C++ 可通过流的概念进行程序与外界环境( 用户.文件等 )之间的交互.流是一种将数据自源( source )推送至目的地( destination )的管道.在 C++ 中,与标准输入/输出相关的流 ...

随机推荐

  1. SPA程序加载首界面eclipse卡顿解决笔记

    最近在开发SPA程序项目时遇到一个问题,因为是在开发阶段,所以直接就在eclipse中启动项目. 每次进入首界面时,eclipse就会长时间卡顿,前端界面也加载不出来,很影响开发效率. 在查找问题的时 ...

  2. 【分享】熟练的Java程序员应该掌握哪些技术?

    Java程序员应该掌握哪些能力才能算是脱离菜鸟达到熟练的程度? 1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任 ...

  3. python 游戏(龙的国度)

    1. 理清楚游戏思路 实现功能:2个洞穴选择,一个洞穴是好龙,一个洞穴是坏龙,坏龙可以概率屠龙或者概率逃跑选项(后续难度需要增加宝藏获取装备,随机遇见商人,随着游戏进度逐步减少屠龙概率) 2. 计数和 ...

  4. 树形DP ---- Codeforces Global Round 2 F. Niyaz and Small Degrees引发的一场血案

    Aspirations:没有结果,没有成绩,acm是否有意义?它最大的意义就是让我培养快速理解和应用一个个未知知识点的能力. ————————————————————————————————————— ...

  5. PHP Laravel Install and Quickstart

    1.安装Laravel 一键安装包Laravel 要安装Laravel依赖的PHP7以上版本,以及php 扩展php-openssl php-pdo ... 以及Homestead github下载安 ...

  6. PAT甲题题解-1075. PAT Judge (25)-排序

    相当于是模拟OJ评测,这里注意最后输出:1.那些所有提交结果都是-1的(即均未通过编译器的),或者从没有一次提交过的用户,不需要输出.2.提交结果为-1的题目,最后输出分数是03.某个题目从没有提交过 ...

  7. tomcat运行JSP时产生的错误:”javax.servlet.servletexception: java.lang.nosuchmethoderror”

    这个错误其实是多次重复编译JAVA文件导致的,需要clean操作,简单的来说就是删除tomcat下work文件夹中工作空间,也可以理解为自己的虚拟路径,比如我运行的jsp的路径:localhost:8 ...

  8. Linux内核分析课程期中总结

    Linux内核分析课程期中总结 姓名:王朝宪 学号:20135114 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com ...

  9. Python爬虫爬中文却显示Unicode,怎样显示中文--问题解答

    首先爬取古诗网站时,显示 原因是因为输出为列表[] 如果写一个循环,输出其中每个元素就为中文了...

  10. Day Six

    站立式会议 站立式会议内容总结 442 今天:实现计划界面的逻辑 遇到的问题:模态框问题 明天:解决上面问题,开始使用动态数据 331 今天:点击添加找到文件 遇到问题:找到文件在app的引入实现 明 ...