cout和printf()哪个快?

kgdso 2006-08-01 10:31:34
我在ZOJ做题目的时候,用c++,一些需要输出很多次的题目,用cout总是超时,用printf()可以通过。
但是我回来测试的时候,发现似乎cout要快一点,比如
#include<iostream.h>
#include "timer.cpp"
void main()
{
long i;
long end=100000;
Timer t;
for(i=0;i<end;i++) cout<<i;
cout<<"Cout用时:"<<t.elaspsed_timer();
t.reset();
for(i=0;i<end;i++) printf("%i",i);
cout<<"Printf用时:"<<t.elaspsed_timer()<<endl;
}
输出:Cout用时:5.703 Printf用时:8.078
end=10000时,Cout用时:0.421 Printf用时:0.704。
环境为vc6.0。请问到底它们的机制是怎样的呢?到底哪个快啊?
...全文
1985 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2006-08-02
  • 打赏
  • 举报
回复
mark~
avalonBBS 2006-08-02
  • 打赏
  • 举报
回复


用write()
adintr 2006-08-02
  • 打赏
  • 举报
回复
这里面可能还存在一个刷新的问题,
cout 会将要显示的内容放到缓冲区内,到一定大小或是调用 flush 是才通过 io 接口来显示,减少了操作次数,速度自然会快些。
adintr 2006-08-02
  • 打赏
  • 举报
回复
检查是编译期的事和运行效率无关
song4 2006-08-02
  • 打赏
  • 举报
回复
printf快
没有类型检查
老师讲过
adintr 2006-08-02
  • 打赏
  • 举报
回复
cout 快也是有理由的, printf() 要分析字符串来动态确定传入的数据类型。
cout 在编译器通过重载已经把类型确定下来了,而且其输出那些运算符重载函数都可以内联
xyq1986 2006-08-02
  • 打赏
  • 举报
回复
scanf和printf快吧,我做ACM的时候都是用这两个,没用cin和cout的,用cin和cout很可能会超时
lexchou 2006-08-02
  • 打赏
  • 举报
回复
很无聊的讨论。IO本来都是效率瓶颈
pass86 2006-08-02
  • 打赏
  • 举报
回复
那就去看看
cout和printf的代码吧。
gjianpro 2006-08-02
  • 打赏
  • 举报
回复
查看一下printf和cout的汇编代码,然后再比较就明白了
我啃 2006-08-02
  • 打赏
  • 举报
回复
我认为内核级别的PRINTF在没有其他干扰(没有人家占用STDOUT)的时候比COUT快一点
song4 2006-08-02
  • 打赏
  • 举报
回复
非常通俗的说
scanf,printf经常出错
所以它快
Jagen在路上 2006-08-02
  • 打赏
  • 举报
回复
printf要比cout快很多。
song4 2006-08-02
  • 打赏
  • 举报
回复
我是说读取数据没有检查
肯定快
archim 2006-08-01
  • 打赏
  • 举报
回复
把end=100000换成end=1000000以上
Oversense 2006-08-01
  • 打赏
  • 举报
回复
printf 快吧
avalonBBS 2006-08-01
  • 打赏
  • 举报
回复


你把printf和cout的位置再换下看看时间
cccliang 2006-08-01
  • 打赏
  • 举报
回复
timer.cpp代码在哪里呢,我也来试试看
Kumgen 2006-08-01
  • 打赏
  • 举报
回复
这种问题有意义吗?
看汇编不就知道了
xleicsu 2006-08-01
  • 打赏
  • 举报
回复
编译器相关的
加载更多回复(18)

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧