各种输出方式的比较
代码1:
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
signed main(){
freopen("1.out","w",stdout);
rep(i,1,2000000)printf("%d\n",i);
return 0;
}
- 开O2运行时间:
3.379 seconds
- 不开O2运行时间:
3.328 seconds
代码2:
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
signed main(){
freopen("1.out","w",stdout);
rep(i,1,2000000)cout<<i<<endl;
return 0;
}
- 开O2运行时间:
3.839 seconds
- 不开O2运行时间:
3.79 seconds
代码3:
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
signed main(){
freopen("1.out","w",stdout);
rep(i,1,2000000)cout<<i<<"\n";
return 0;
}
- 开O2运行时间:
0.2382 seconds
- 不开O2运行时间:
0.4821 seconds
代码4:
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
inline void print(int x){
if(x<0)putchar('-'),x=-x;
if(x>9)print(x/10);
putchar(x%10+'0');
}
signed main(){
freopen("1.out","w",stdout);
rep(i,1,2000000)print(i),putchar('\n');
return 0;
}
- 开O2运行时间:
0.4483 seconds
- 不开O2运行时间:
0.4122 seconds
由此可得,printf和cout(使用endl)的速度相差不大,使用cout并用"\n"
代替endl是最优解,在开了O2以后,其速度甚至快于快输(排除fwrite)。
在有多组询问时非常有用。
标签:输出,seconds,rep,int,关于,测试,include,O2,define From: https://www.cnblogs.com/zifanoi/p/18038483