社区讨论

令人惊奇的事实:快输和普通输出的速度比较

学术版参与者 10已保存回复 31

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
31 条
当前快照
1 份
快照标识符
@mhjl0sx1
此快照首次捕获于
2025/11/04 04:17
4 个月前
此快照最后确认于
2025/11/04 06:32
4 个月前
查看原帖
今天,我发现了一个令人震惊的事实,就是普通输出cout比快输快
普通输出:
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
  freopen("acm.in","r",stdin);
  freopen("acm.out","w",stdout);
  for(int i=1;i<=10000000;i++) cout<<i;
  return 0;
}
将它运行,发现运行了0.8944s(可能有偏差,但是大差不差)
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
  freopen("acm.in","r",stdin);
  freopen("acm.out","w",stdout);
  for(int i=1;i<=10000000;i++) printf("%d",i);
  return 0;
}
将它运行,发现运行了16.83s(大差不差)
这远远颠覆我的认知,cout竟然比printf
快输:
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std; 
void out(int x) {
    if(x<0)putchar('-'),x=-x;
    if(x<10)putchar(x+'0');
    else out(x/10),putchar(x%10+'0');
}
signed main() {
    freopen("acm.in","r",stdin);
	freopen("acm.out","w",stdout);
	for(int i=1;i<=10000000;i++) out(i); 
    return 0;
}

令人震惊的是,它竟然运行了2.13s,远远比普通输出cout
求助无所不能的谷民们,是我的快输写错了,还是快输就是比普通输出cout

回复

31 条回复,欢迎继续交流。

正在加载回复...