今天刷OJ时,有个全排列的题目一直超时,当时是用的cout,然后换成printf果断 ac,因此,拥有执著的求知精神的我试试到底差别有多大。
测试用例是用printf 和 cout 分别输出从0~1000,代码如下
#include<stdio.h>
#include<windows.h>
#include<iostream>
using namespace std;
int main(){
SYSTEMTIME sys;
GetLocalTime( &sys );
int t1 = sys.wMilliseconds+sys.wSecond*1000;
for (int i = 0 ; i < 1000 ; i ++)
printf("%d",i);
GetLocalTime( &sys );
int t2 = sys.wMilliseconds+sys.wSecond*1000;
for (int i = 0 ; i < 1000 ; i ++)
cout<<i;
GetLocalTime( &sys );
int t3 = sys.wMilliseconds+sys.wSecond*1000;
cout<<endl;
cout<<"printf所用时间"<<t2-t1<<endl;
cout<<"cout所用时间"<<t3-t2<<endl;
}
执行得到的结果:
printf所用时间80
cout所用时间189
里面的时间都加上调用GetLocalTime( &sys );和sys.wMilliseconds+sys.wSecond*1000;一个不复杂的运算,最多占用1ms时间。
所以,得到结论是 当输出数据量比较大时,printf 比 cout 有更快的速度