使用QT在windows下高精度测试程序运行时间

#include <QTime>
#include <QApplication>
#include <QMessageBox>
#include <QWidget>
#include <QLabel>
#include <windows.h>
using namespace std;
void caculate()
{
    for(int i=0;i<32323;i++)
    {
        for(int j=0;j<32323;j++) ;
    }
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget *w = new QWidget;
    QLabel *label1,*label2,*label3,*label4;
    //QTime mytime = QTime::currentTime ();
    //QMessageBox::warning(w,"test time", mytime.toString());//debug
    LARGE_INTEGER litmp;
    LONGLONG Qpart1,Qpart2,Useingtime;
    double dfMinus,dfFreq,dfTime;

    //获得CPU计时器的时钟频率
    QueryPerformanceFrequency(&litmp);//取得高精度运行计数器的频率f,单位是每秒多少次(n/s),
    dfFreq = (double)litmp.QuadPart;

    QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
    Qpart1 = litmp.QuadPart; //开始计时

    caculate(); //待测试的计算函数等
    QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
    Qpart2 = litmp.QuadPart; //终止计时

    label1 = new QLabel("Start Countor:"+QString::number(Qpart1,10),w);
    label1->setGeometry(10,10,200,30);
    label2 = new QLabel("Use Countor:"+QString::number((Qpart2-Qpart1),10),w);
    label2->setGeometry(10,50,200,30);
    label3 = new QLabel("End Countor:"+QString::number(Qpart2,10),w);
    label3->setGeometry(10,90,200,30);

    dfMinus = (double)(Qpart2 - Qpart1);//计算计数器值
    dfTime = dfMinus / dfFreq;//获得对应时间,云锡摇床。单位为秒,可以乘精确到微秒级(us)
    Useingtime = dfTime*1000000;
    label4 = new QLabel("Use Time:"+QString::number(Useingtime,10)+" us",w);
    label4->setGeometry(10,120,200,30);
    w->setMinimumSize(300,200);
    w->setMaximumSize(300,200);
    w->show();

    return a.exec();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值