QT上位机开发(函数运行时间分析)

发布时间:2024年01月14日

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

? ? ? ? 软件除了功能开发、debug之外,另外一个很重要的部分就是软件的优化和提高。这里面的优化,当然就是希望软件能够处理更多的数据、达到更高的效率。在这一方面,qt也不例外。不过qt本身已经提供了的类似的功能类,使用起来特别方便。我们今天正好趁这个机会学习下,应该怎么用qt提供的类或者api接口来测量对应函数的运行时间。

1、创建基础的widget工程

? ? ? ? 首先,我们创建一个基础的widget工程,纯粹是为了代码编译方便。

2、开始编写代码

? ? ? ? qt下面对函数进行时间统计,用到的头文件是QElapsedTimer这个文件,类也是同名类。使用的时候呢,首先创建一个QElapsedTimer类型的变量timer。接着statimer定时器,在调用了对应的测试函数之后,继续调用timer.elapsed()函数。这样我们就可以知道当前总共花了多少时间。这么说可能有点空泛,我们来通过代码进行分析。

#include <Windows.h>
#include <QApplication>
#include <QElapsedTimer>
#include <QDebug>

int main(int argc, char *argv[]) {
	QApplication app(argc, argv);

	QElapsedTimer timer;
	timer.start(); // start, get start value

	// invoke myFunction here
	Sleep(1000);

	qint64 elapsedTime = timer.elapsed(); // get stop value
	qDebug() << "Function execution time:" << elapsedTime << "milliseconds";

	return app.exec();
}

? ? ? ? 为了测试这个时间是不是真的有那么准,我们用windows平台提供的Sleep函数来进行验证。如果得到elapsedTimer没有什么问题,那代表相关的测量是完全ok的。

3、测试另外一个具体函数

? ? ? ? 之前的延时是1000ms,得到的打印是1010ms,看上去不是特别离谱。因此,我们可以测试另外一个循环,看看函数花了多少时间,整个代码是这样的,

#include <Windows.h>
#include <QApplication>
#include <QElapsedTimer>
#include <QDebug>

// measure
void myFunction() {
	for (int i = 0; i < 100000000; ++i) {
		// some operation
	}
}

int main(int argc, char *argv[]) {
	QApplication app(argc, argv);

	QElapsedTimer timer;
	timer.start(); // start, get start value

	// invoke myFunction here
	myFunction();

	qint64 elapsedTime = timer.elapsed(); // get stop value
	qDebug() << "Function execution time:" << elapsedTime << "milliseconds";

	return app.exec();
}

? ? ? ? 测试函数myFunction当中,i循环了1亿次,我们看下大约需要花费多少时间,

4、总结

? ? ? ? 不管是windows平台,还是linux平台,对函数、模块和功能进行时间分析和统计,这都是基本技能,建议大家可以好好掌握一下。另外及时不是qt模块,最好大家也可以自己写出对应的时间统计函数。

文章来源:https://blog.csdn.net/feixiaoxing/article/details/135580483
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。