【問題描述】程式執行時間是程式設計的一項重要指標,在qt中如何測算程式的執行時間呢?
【解析】
測試函式
[html]
view plain
copy
#include
<
math.h
>
void function()
方法1 利用qtime,其精度為ms級
[html]
view plain
copy
#include
<
qdebug
>
#include <
qtime
>
qtime time;
time.start();
function();
qdebug()<
<
time.elapsed
()/1000.0
<
<
"s";
執行結果:0.109 s
方法2 利用gettimeofday(),其精度為us級
[html]
view plain
copy
#include
<
qdebug
>
#include <
sys/time.h
>
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級
[html]view plain
copy
#include
<
qdebug
>
#include <
sys/time.h
>
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級
[html]
view plain
copy
#include
<
qdebug
>
#include <
windows.h
>
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
Qt測算程式執行時間
問題描述 程式執行時間是程式設計的一項重要指標,在qt中如何測算程式的執行時間呢?解析 測試函式 html view plain copy include math.h void function 方法1利用qtime,其精度為ms級 html view plain copy include qde...
QT中測算程式的執行時間
程式執行時間是程式設計的一項重要指標,在qt中如何測算程式的執行時間呢?測試函式 include void function 方法1 利用qtime,其精度為ms級 include include qtime time time.start function qdebug 執行結果 0.109 s ...
程式執行時間
要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock 函式,可以捕捉從程式開始執行到clock 被呼叫時所 耗費的時間。這個時間單位是clock tick,即 時鐘打點 同時還有乙個常數clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲 得乙個函式f...