对于cin和scanf效率的测试

由上一题杭电的1425水题,给我的启发是多用scanf,printf。cin和scanf的效率。

测试代码如下:

#include   
#include   
#include   
#define N 10000  
using namespace std;  
int main()  
{  
    time_t first, second;  
    int t;  
    first=time(NULL);  
    for(int i=0; i> t;  
    second=time(NULL);  
    printf("Time of test1 is: %fseconds\n",difftime(second,first));  
    first=time(NULL);  
    for(int i=0; i

为了使测试准确,两次输入都是用的相同的数据

对于cin和scanf效率的测试_第1张图片

tool为生成数据的一个小程序~~

对于cin和scanf效率的测试_第2张图片

首先设定N为10000时,测试了10000个输入数据,输出结果如下:

对于cin和scanf效率的测试_第3张图片

二者几乎无差别,设定N为100000,测试结果如下:

对于cin和scanf效率的测试_第4张图片

当数值加到180000时,结果:

对于cin和scanf效率的测试_第5张图片

当数据为1000000时,结果为:

对于cin和scanf效率的测试_第6张图片


可见,当输入小规模数据时cin和scanf之间的差距不是很明显,但对于大数据,scanf的优势相当明显。况且这只是纯的读入测试,而且还是在本地,如果在实际比赛中,cin的效率 会更低,因此,在ACM中,尽量使用scanf来读取数据,除非数据量已知且不够大,除非数据量已知且不够大,可用cin。cout,cin是基于流的输入与输出,有缓存区,先把结果存到缓存区,然后一次性输入和输出,但是,cout之类有类型检查,不容易错。基于上述原因,在对性能比较苛刻的情况下,还是用scanf,printf比较好。

你可能感兴趣的:(对于cin和scanf效率的测试)