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

583 篇文章 127 订阅
196 篇文章 13 订阅

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

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_OBJECT

private 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"

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值