• scanf、cin及其优化、快读性能测试


    为了让大家了解C++各种IO方式的性能,于是就有了这篇文章。

    本次测试采取的数据均为 106 个不超过 108 随机正整数。

    image

    测试代码

    #include
    using namespace std;
    int x;
    int main(){
    	freopen("test.in","r",stdin);
    	freopen("test.out","w",stdout);
    	double s=clock();//记录开始时间
    	for(int i=1;i<=1000000;i++){
    		//测试内容 
    	}
    	cerr<<clock()-s<<"\n";//在终端输出运行时间
    	return 0;
    }

    输入测试

    scanf

    image

    328 毫秒

    无优化cin

    image

    577 毫秒

    优化后cin

    image

    81 毫秒

    快读(不考虑负数)

    image

    155 毫秒

    输出测试

    输出每一个数后换行

    printf

    image

    989 毫秒

    无优化cout(endl)

    image

    1447 毫秒

    优化后cout(endl)

    image

    1386 毫秒

    无优化cout(\n)

    image

    61 毫秒

    优化后cout(\n)

    image

    73 毫秒

    快写

    image

    105 毫秒

    总结

    输入

    如果不想关闭读写同步的话就用快读,总之不要用原生的 cinscanf 处于中立。

    输出

    快写的优化作用比快读小得多,几乎没有。

    正常的 printf 足够。

    endl 换行的 cin 慢的要死,打死也不要用。

    建议用 \n 换行,优化不重要。

    综上所述,不关闭读写同步建议用快读+ cout(\n换行),关闭读写同步就无脑 cin/cout。


    __EOF__

  • 本文作者: xxxalq
  • 本文链接: https://www.cnblogs.com/xxxalq/p/18318012
  • 关于博主: 本人为初中生蒟蒻OIER
  • 版权声明: 除特殊说明外,转载请注明出处~[知识共享署名-相同方式共享 4.0 国际许可协议]
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    docker搭建nginx+php-fpm
    TLS 协议研究
    信息学奥赛一本通题解目录(没写完)
    【面试题】封装jQuery源码以及实现jQuery的扩展功能
    数据可视化基础与应用-01-课程目标与职位分析
    通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测
    Map接口实现类的特点
    基于微信小程序的健身房私教预约平台设计与实现(源码+lw+部署文档+讲解等)
    信息的浏览
    IDEA 使用自定义MAVEN(maven安装及IDEA配置)
  • 原文地址:https://www.cnblogs.com/xxxalq/p/18318012