Day37 使用windows API精确记录时间2023-08-16

1.添加头文件#include

2. 使用了Windows API函数QueryPerformanceFrequency来获取计时器的频率

3.在计时开始时,用QueryPerformanceCounter来获取当前计数值。

4.在计时结束时,再次用QueryPerformanceCounter来获取当前计数值。该函数返回的是LARGE_INTEGER,它是Windows API中定义的一个结构体,用于表示一个64位的有符号整数。获取到的计数值保存在LARGE_INTEGER结构体的成员变量QuadPart,它是一个64位的有符号整数。

5.通过计数值相减除以频率值获得被测代码总耗时,可以精确到微秒。

6.在QT程序中使用该方法有时会出错,这时在.pro中添加DEFINES +="_HAS_STD_BYTE=0"即可。

代码示例如下:

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    LARGE_INTEGER   start;
    LARGE_INTEGER  stop;
    LARGE_INTEGER   freq;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&start);
    for(int i =0;i<1000000;i++){
    }
    QueryPerformanceCounter(&stop);
    double  time_sec = (unsigned long long)(stop.QuadPart - start.QuadPart) / (double)freq.QuadPart;//单位是S,精确到us
    qDebug()<<"for need time :"<

计时结果如下:

Day37 使用windows API精确记录时间2023-08-16_第1张图片

 

你可能感兴趣的:(Qt积累——基础篇,qt6.3)