一.QT程序在提升程序性能的调试中经常要计算一段程序的执行时间,下面介绍两种简单的实现方式,精确度都可以达到ms。
1.方式一
(1)代码:
#include <QDateTime>
qDebug() << "Current_date_and_time start: " << QDateTime::currentDateTime();
for(int f = 0; f< 10000; ++f) {
std::vector<int> vec(10000);
for (int i = 0; i < 10000; ++i) {
vec[i] = i;
}
}
qDebug() << "Current_date_and_time end: " << QDateTime::currentDateTime();
(2)测试结果
Current_date_and_time start: QDateTime(2024-01-13 10:10:33.084 中国标准时间 Qt::LocalTime)
Current_date_and_time end: QDateTime(2024-01-13 10:10:33.440 中国标准时间 Qt::LocalTime)
手动计算差值为:356ms
2.方式二
(1)代码:
qint64 time1 = QDateTime::currentDateTime().toMSecsSinceEpoch();
for(int f = 0; f< 10000; ++f) {
std::vector<int> vec(10000);
for (int i = 0; i < 10000; ++i) {
vec[i] = i;
}
}
qint64 time2 = QDateTime::currentDateTime().toMSecsSinceEpoch();
qDebug() << "Time difference in milliseconds:" << time2 - time1;
(2)测试结果
Time difference in milliseconds: 344
3.方式三
(1)代码
#include <QElapsedTimer>
QElapsedTimer timer;
int timervalue = timer.elapsed();
qDebug() << "Current_date_and_time start: " << timer.elapsed();
for(int f = 0; f< 10000; ++f) {
std::vector<int> vec(10000);
for (int i = 0; i < 10000; ++i) {
vec[i] = i;
}
}
qDebug() << "Current_date_and_time end: " << timer.elapsed();
qDebug() << "time total: " << timer.elapsed() - timervalue ;
(2)测试结果
Current_date_and_time start: 59181610
Current_date_and_time end: 59181962
time total: 352
二.总结:
可以看到上述三种方法同一段程序得到的时间并不完全一致,经过多次测试验证,每种方法
时间都是变化的(单位ms):
次数 | 方式一 | 方式二 | 方式三 |
1 | 356 | 344 | 352 |
2 | 348 | 346 | 348 |
3 | 351 | 345 | 352 |
4 | 344 | 342 | 347 |