关于cout的一个小测试

以前知道使用cout<<endl换行会刷新缓冲区,但是从来也没在意过这个问题,早上起来翻书看到关于这方面的东西就来做了个测试,不做不知道,一测下一跳啊- -!

测试代码:

/**

吉林大学
Jilin U

Author:     sinianluoye (JLU_LiChuang)
Date:        2015-3
Usage:

**/

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>

#define ll long long
#define eps 1e-8
#define ms(x,y) (memset(x,y,sizeof(x)))
#define fr(i,x,y) for(int i=x;i<=y;i++)
#define sqr(x) ((x)*(x))

#include <ctime>
using namespace std;

const int maxn=1e7+10;
int main()
{
    for(int cas=0;cas<10;cas++)
    {
        int a=clock();
        freopen("in","w",stdout);
        for(int i=0;i<maxn;i++)
            cout<<"\n";
        int b=clock();
        freopen("CON","w",stdout);
        printf("used \"\\n\" Case %d: %d ms\n",cas+1,b-a);
    }
    cout<<endl;
    for(int cas=0;cas<10;cas++)
    {
        int a=clock();
        freopen("in","w",stdout);
        for(int i=0;i<maxn;i++)
            cout<<endl;
        int b=clock();
        freopen("CON","w",stdout);
        printf("used \"endl\" Case %d: %d ms\n",cas+1,b-a);
    }
}

/*************copyright by sinianluoye (JLU_LiChuang)***********/
不多说了,直接上测试结果,说实话,真的蛮惊讶的:、


可以清晰的看到,以换行为目的使用endl的话,效率比单纯的’\n‘要慢了17倍左右,看来以后写代码要注意这个问题了~


顺便测试了一下printf和puts,putchar的效率~


看来printf还是蛮快的,用puts换行的习惯也得改改了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值