码迷,mamicode.com
首页 > 其他好文 > 详细

ACM输入函数测试 - scanf cin 优化的输入

时间:2017-08-27 11:11:24      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:turn   close   lock   i++   style   getch   fclose   include   span   

2017-08-27 10:26:19

writer:pprp

进行测试如下四种输入方式:

1、scanf

2、cin

3、用了ios::sync_with_stdio(false);的cin

4、自己写的输入函数(如下)

inline int read()
{
    int X=0,w=1;
    char ch=0;
    while(ch<0 || ch>9)
    {
        if(ch==-) w=-1;
        ch=getchar();
    }
    while(ch>=0 && ch<=9) X=(X<<3)+(X<<1)+ch-0,ch=getchar();
    return X*w;
}

测试先随机生成了1000以内数,保存在out.txt文件中,大概2M的内容

开始测试输入:

代码如下:

/*
@theme:ACM输入输出测试
@writer:pprp
@declare:测试scanf,优化的输入,和cin
@date:2017/8/26
*/
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <windows.h>
#include <unistd.h>

using namespace std;
const int maxn = 100000;
int a[maxn],b[maxn];

inline int read()
{
    int X=0,w=1;
    char ch=0;
    while(ch<0 || ch>9)
    {
        if(ch==-) w=-1;
        ch=getchar();
    }
    while(ch>=0 && ch<=9) X=(X<<3)+(X<<1)+ch-0,ch=getchar();
    return X*w;
}

int main()
{
    ios::sync_with_stdio(false);
    freopen("out.txt","r",stdin);
//  freopen("out.txt","w",stdout);


    clock_t c = clock();
    for(int i = 0 ; i < maxn ; i++)
    {
//        scanf("%d%d",&a[i],&b[i]);
//        cin >> a[i] >> b[i];
//        a[i] = read();
//        b[i] = read();
    }
    clock_t d = clock();
    cout << d - c << endl;

    fclose(stdin);
    fclose(stdout);
}

测试结果是:时间:自己写的输入函数 < 用了ios::sync_with_stdio(false);的cin < scanf < cin

所以在ACM输入要求严格的情况下,建议采用ios::sync_with_stdio(false)的cin

如果要求更加严格那就采用,自己写的输入函数

 

ACM输入函数测试 - scanf cin 优化的输入

标签:turn   close   lock   i++   style   getch   fclose   include   span   

原文地址:http://www.cnblogs.com/pprp/p/7439753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!