前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >qDebug | std::cout | printf性能表现

qDebug | std::cout | printf性能表现

作者头像
Qt君
发布2019-10-23 19:29:27
1.4K0
发布2019-10-23 19:29:27
举报
文章被收录于专栏:跟Qt君学编程

Qt君最近感觉qDebug相对于printf打印感觉有些慢,但又没有证据,于是闲着就写下qDebug,std::cout,printf的性能表现咯。注:测试数据仅供参考

0x00 测试环境

环境

参数

CPU

i5-8250U

内存

8G

操作系统

Windows@64位

Qt版本

Qt 5.12.1

编译器

MSVC2017@64位

0x01 数据呈现

  通过使用qDebug,std::cout,printf在1秒内打印的字符串数据。

  • 分别各测试10次后取平均值,详细数据在文末。

debug版本(次/秒)

release版本(次/秒)

qDebug

38317

60923

std::cout

382890

372696

printf

432606

386663

  • 图表化显示

0x02 数据分析

  • 性能表现:printf > std::cout > qDebug
  • qDebug()相对于std::cout和printf差距过大(6~10倍);
  • std::cout与printf数据基本一致;
  • std::cout与printf的debug与release差距不大,甚至有debug比release快的现象(可能受实验环境影响)。

0x03 结论

  • qDebug比std::cout和printf慢,高频调用有可能影响系统时延;
  • 性能均衡推荐选用std::cout;
  • 追求性能选用printf。

0x04 测试程序

代码语言:javascript
复制
#include <QDebug>
#include <QElapsedTimer>
#include <iostream>

/* 注:单独打开某个宏测试 */
//#define TEST1
//#define TEST2
//#define TEST3

int main(int argc, char *argv[])
{
#ifdef TEST1
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            qDebug() << "Test1";
            it++;
        }

        qDebug() << "Test1: " << it;
    }
#endif

#ifdef TEST2
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            std::cout << "Test2" << std::endl;
            it++;
        }

        std::cout << "Test2: " << it;
    }
#endif

#ifdef TEST3
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            printf("Test3\n");
            it++;
        }

        printf("Test3: %lld\n", it);
    }
#endif
	return 0
}

0x05 测试数据(各10次)

  • debug版本
代码语言:javascript
复制
qDebug:
38310 38452 39416 38420 38962 38385 39293 38814 34178 38946

std::cout:
389512 397234 378168 367970 366371 364401 405547 405992 365863 387846

printf:
468310 423937 480598 385025 490155 489473 373419 397995 445099 372054
  • release版本
代码语言:javascript
复制
qDebug:
60779 60710 59450 59685 63298 61044 59788 61167 61822 61495

std::cout:
352541 358754 377001 380487 397576 362145 333757 413027 416352 335320

printf:
468310 329729 333142 320171 333825 330411 471041 473771 468310 337921
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 测试环境
  • 0x01 数据呈现
  • 0x02 数据分析
  • 0x03 结论
  • 0x04 测试程序
  • 0x05 测试数据(各10次)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档