#include <QDebug>
#include <QTime>
#include <sys/time.h>
#include <windows.h>
#include <math.h>
void function(); //測試函數
int main(void)
{
qDebug()<<"-------------------------------";
/*************************************************/
//方法1 利用QTime,其精度為ms級
QTime time;
time.start();
function();
qDebug()<<time.elapsed()/1000.0<<"s";
//運行結果0.109s
/*************************************************/
//方法2 利用gettimeofday(),其精度為us級
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
function();
gettimeofday(&tpend,NULL);
timeuse=(1000000*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000000.0;
qDebug()<<timeuse<<"s";
//運行結果:0.109375 s
/*************************************************/
//方法3 利用clock(),其精度為ms級
double time_Start = (double)clock();
function();
double time_End = (double)clock();
qDebug()<<(time_End - time_Start)/1000.0<<"s";
//運行結果:0.11 s
/*************************************************/
//方法4 利用windows.h(VC)函數,提精度為us級
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; //開始計時
function(); //待測試的計算函數等
QueryPerformanceCounter(&litmp);//取得高精度運行計數器的數值
Qpart2 = litmp.QuadPart; //終止計時
dfMinus = (double)(Qpart2 - Qpart1);//計算計數器值
dfTime = dfMinus / dfFreq;//獲得對應時間,單位為秒,可以乘1000000精確到微秒級(us)
Useingtime = dfTime*1000000;
qDebug()<<dfTime<<"s";
//運行結果:0.107415 s
/*************************************************/
return 0;
}
//測試函數
void function()
{
unsigned int i,j;
double y;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
y=sin((double)i);
}
原文:https://blog.csdn.net/hebbely/article/details/78953318