这里需要介绍一个宏,主要就是靠使用这个宏完成功能:

QBENCHMARK{//TODO
}

在单元测试中,这个宏在那个函数中,那么这个函数就会进行多次测试,如果不需要多次调用可以用下面的这宏代替:

QBENCHMARK_ONECE{//TODO
}

通过多次测试,得到其性能,下面给出一张表,在单元测试的时候可以添加如下的参数:

程序运行截图如下:

默认运行:

带-tickcounter参数运行:

源码如下:

test5.pro

QT += widgets testlib
SOURCES = benchmarking.cpp
INSTALLS += target

benchmark.cpp

#include <QtWidgets>
#include <QTest>
#include <QDebug>class TestBenchmark : public QObject{Q_OBJECTprivate slots:void simple();void multiple_data();void multiple();void series_data();void series();
};void TestBenchmark::simple(){QString str1 = QString("This is a test string");QString str2 = QString("This is a test string");QCOMPARE(str1.localeAwareCompare(str2), 0);QBENCHMARK{str1.localeAwareCompare(str2);}
}void TestBenchmark::multiple_data(){QTest::addColumn<bool>("useLocaleCompare");QTest::newRow("locale aware compare") << true;QTest::newRow("standard compare") << false;
}void TestBenchmark::multiple(){QFETCH(bool, useLocaleCompare);QString str1 = QString("This is a test string");QString str2 = QString("This is a test string");int result;if(useLocaleCompare){QBENCHMARK{result += str1.localeAwareCompare(str2);}}else{QBENCHMARK{result = (str1 == str2);}}Q_UNUSED(result);
}void TestBenchmark::series_data(){QTest::addColumn<bool>("useLocaleCompare");QTest::addColumn<int>("stringSize");for(int i = 1; i < 10000; i += 2000){QByteArray size = QByteArray::number(i);QTest::newRow(("locale aware compare -- " + size).constData()) << true << i;QTest::newRow(("standard compare -- " + size).constData()) << false << i;}
}void TestBenchmark::series(){QFETCH(bool, useLocaleCompare);QFETCH(int, stringSize);QString str1 = QString().fill('A', stringSize);QString str2 = QString().fill('A', stringSize);int result;if(useLocaleCompare){QBENCHMARK{result = str1.localeAwareCompare(str2);}}else{QBENCHMARK{result = (str1 == str2);}}Q_UNUSED(result);
}QTEST_MAIN(TestBenchmark)
#include "benchmarking.moc"

Qt文档阅读笔记-单元测试中构建标准检测程序(CPU、Linux性能、内存泄漏等)相关推荐

  1. Qt文档阅读笔记-QSslSocket中与错误相关的信号

    目录 基本概念 代码与实例 基本概念 放代码前先来看这个信号: [signal] void QAbstractSocket::stateChanged(QAbstractSocket::SocketS ...

  2. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  3. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  4. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  5. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

    moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...

  6. Qt文档阅读笔记-Qt跨平台库(Qt基本库)

    Qt基本库是所有Qt平台的基础分.他能在所有支持开发的平台和测试平台上跑.这些库在Qt5中已经保持源代码和二进制的兼容. 基本模块(基本库)被其他特殊模块所附加. 下面是Qt基本模块(基本库)的列表: ...

  7. Qt文档阅读笔记-QWebEngineView及QML WebEngineView

    这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...

  8. Qt文档阅读笔记-Fortune Client Example实例解析

    目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...

  9. Qt文档阅读笔记-对Style Plugin Example实例的解析

    目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...

最新文章

  1. Python中*args和**kwargs的区别
  2. java一次查询900w数据_一次SQL查询优化原理分析(900W+数据,从17s到300ms)
  3. iOS之NSAttributedString-------字符属性
  4. SAP OData etag flag setting in metadata MPC_EXT
  5. java编写算术平均数,[求助]基础-怎样编一个计算算术平均数的程序(急啊)
  6. [理解需求变更之一]说说需求变更的必然
  7. 华为暂停一般性社招;嘀嗒出行系统崩溃;美团和摩拜账号互通 | 极客头条
  8. 程序员崩溃了,想拿的年终奖怎么说黄就黄?!
  9. iOS常用的第三方类库
  10. 机器学习课程笔记【五】- 支持向量机(2)
  11. 网络编程 基础 基于socket的tcp和udp连接
  12. RSA算法的Java实现
  13. 程序员必备的一些数学基础知识
  14. PDF怎么翻译成中文?这些方法值得收藏
  15. 【H3CTE认证和HCIE认证一样吗?】
  16. 最常用的美式英语1500句
  17. 杀戮空间2服务器修改地图,《杀戮空间2》新地图全任务完成方法图文详解
  18. 人生就是个学习、思考与实践的过程
  19. ASP.Net: EshineASPNet教程-支付机构支付模块
  20. 【全开源+免费更新】doodoo.js项目结构

热门文章

  1. HTML P不能包含块级元素(包括自身)
  2. 《局域网聊天——Android》
  3. 【原创】FlashFXP_4.0.0.1510 值得研究
  4. 对USB驱动程序的理解
  5. 这里有最全的C++工程师的技术需求,你要做哪方面的开发?
  6. 科幻照进现实!2020年这个最新编程技术,将完全颠覆软件开发习惯
  7. 没人性!让我们这么早来上班
  8. java shirofilter_Spring项目集成ShiroFilter简单实现权限管理
  9. 如何通过控制台访问openstack实例_如何通过seo提高网站设计的访问量
  10. 博士出身好科研产出高,学术谱系真的可以决定一切吗?