您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页[笔记]cin、cout与scanf、printf的效率差异对比分析

[笔记]cin、cout与scanf、printf的效率差异对比分析

来源:纷纭教育

之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms、20ms,于是打开一个20ms的代码查看人家强在哪里。但结果研究了半天感觉差不多,于是想着应该不是算法的问题。然后又想到,网上提交的答案,大家都是用scanf和printf写的,而我用的cin cout,而这题的确需要大量的输入输出,于是就想着把所有cin cout改成scanf printf。结果 —。—

int main()
{
    clock_t a, b;
    a = clock();
    for (int i = 0;i < 29999;++i)
        cout << i << '\n';
    b = clock();
    cout << b - a;
    return 0;
}

int main()
{
    clock_t a, b;
    a = clock();
    for (int i = 0;i < 29999;++i)
        printf("%d\n",i);
    b = clock();
    printf("%d",b - a);
    return 0;
}

结果是:cout用时6124,printf用时3536。cout比printf差了一倍不到。而且对于cout,那句“std::ios::sync_with_stdio(false);”其实是不起作用的,它只针对cin。于是我的结论与上面链接里的博文相反。
所以cout和printf效率可以说差不多,主要还是看编译器吧。使用时也不必纠结,只是cout毕竟新标准,更安全适用面更广更灵活。

最后:
本文讨论的输入输出使用仅仅针对ACM做题。scanf的确快,拿来做题还是很不错的。输入量少的话拿cin也毫无问题,刷个题目也没必要特地跑过去关闭同步。而且cin更安全更便捷,还支持重载。且对于string与自定义的数据,就只能用cin、cout没跑了。
对于我们这种有强迫症、选择恐惧症的,有两个方法给你自由选择也未必是个好事。不分分清楚心理难受哈哈。

转载于:https://www.cnblogs.com/xienaoban/p/6798095.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务