为了让大家了解C++各种IO方式的性能,于是就有了这篇文章。
本次测试采取的数据均为 \(10^6\) 个不超过 \(10^8\) 随机正整数。
测试代码:
#include<bits/stdc++.h>
using namespace std;
int x;
int main(){
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
double s=clock();//记录开始时间
for(int i=1;i<=1000000;i++){
//测试内容
}
cerr<<clock()-s<<"\n";//在终端输出运行时间
return 0;
}
\(328\) 毫秒
\(577\) 毫秒
\(81\) 毫秒
\(155\) 毫秒
输出每一个数后换行
\(989\) 毫秒
\(1447\) 毫秒
\(1386\) 毫秒
\(61\) 毫秒
\(73\) 毫秒
\(105\) 毫秒
如果不想关闭读写同步的话就用快读,总之不要用原生的 cin
。scanf
处于中立。
快写的优化作用比快读小得多,几乎没有。
正常的 printf
足够。
endl
换行的 cin
慢的要死,打死也不要用。
建议用 \n
换行,优化不重要。
综上所述,不关闭读写同步建议用快读+ \(\texttt{cout}\)(\n换行),关闭读写同步就无脑 cin/cout。