第四节 scanf和cin的区别(性能差异悬殊)

--write by zhuwx 2019-06-24 20:58:18 +0800 CST

点击量:8

下面用程序来进行对比,看看它们之间有多大的差异

测试题目:输入5300000个数
测试环境:
Windows server2016 AMD A10 9600P CPU 8G内存 7200转硬盘
测试代码:

#include <iostream>
#include <time.h>  
#include <stdio.h>  
#define N 5300000  
using namespace std;  
int main()  
{  
    time_t first, second;  
    int t;  
    first=time(NULL);  
    for(int i=0; i<N; i++)  
        cin >> t;  
    second=time(NULL);  
    printf('Time of test1 is: %fseconds
',difftime(second,first));  
    first=time(NULL);  
    for(int i=0; i<N; i++)  
       scanf('%d',&t);  
    second=time(NULL);  
    printf('Time of test2 is: %fseconds
',difftime(second,first));
    return 0;  
}  

第一个数据是scanf读取5300000个数据所消耗的时间为10秒,第二个数据是读取5300000个数据所消耗的时间为82秒,时间相差巨大,所以在算法比赛中尽量不要使用cin来读取数据。

那么值得注意的是,printf和cout的道理也是如此!!!!

贴上测试数据: