我们都知道,C++里的输入输出方式有很多。一般OI比赛里用C的scanf/printf,它们效率高。新手入门用cin/cout,它们简单易用。也可以自己做快速读入/输出,效率更高。下面我们通过效率对比来看看效率差距。
效率对比
输入
| 输入方式 | 1 0 6 10^6 106 整数 |
|---|---|
| cin | 12.789 sec 12.789 \sec 12.789sec |
| scanf | 3.615 sec 3.615 \sec 3.615sec |
| 快速读入(输入优化) | 2.025 sec 2.025\sec 2.025sec |
生成随机整数函数代码
inline void create(){
srand(time(NULL));
FILE *fp=fopen("in.txt","w");
register int i=1e7;
while(i--)
fprintf(fp,"%d\n",rand()%static_cast<int>(1e7));
fclose(fp);
}
完整测试代码
#include<iostream>
using namespace std;
#include<ctime>
#include<cstdio>
#include<cstdlib>
inline int R(){
register int x=0;register char c=getchar(),f=1;
for(;c<48||c>57;c=getchar())if(c==45)f=-1;
for(;c>47&&c<58;c=getchar())x=(x<<3)+(x<<1)+(c^48);
return x*f;
}
const int hint=1e6;
int main(){
// create();
srand(time(NULL));
clock_t beg;
register int i=hint,n;
puts("输入速度测试:");
freopen("in.txt","r",stdin);
beg=clock();
while(i--)
cin>>n;
printf("cin speed: %f sec\n",(clock()*1.0f-beg*1.0f)/static_cast<float>(CLOCKS_PER_SEC));
i=hint;
beg=clock();
while(i--)
scanf("%d",&n);
printf("scanf speed: %f sec\n",(clock()*1.0f-beg*1.0f)/static_cast

983

被折叠的 条评论
为什么被折叠?



