Qt測算程序運行時間


#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM