程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 精確打印程序的運行時間

精確打印程序的運行時間

編輯:關於C語言

    在寫程序時,經常要計算某一段程序運行所需要的時間,通常用GetCurrentTime來計算時間差,但此函數所得的時間本身就不准備,它的精度也是毫秒級的,所以測試程序的運行時間也只是一個大概時間。要得到微秒級精確度可以使用函數QueryPerformanceCounter和QueryPerformanceFrequency,這兩個函數是根據CPU的嘀嗒來進行計數的。為了方便代碼編寫,利用C++類的構造與析構函數的特性寫一個打印代碼運行時間的類

class CPrintfCodeTime

{

public:

    CPrintfCodeTime(const char* vCodeName)

    {

        m_strName = (NULL != vCodeName)?vCodeName:"";

        LARGE_INTEGER tTimer;
        QueryPerformanceCounter(&tTimer);

         m_llTime = tTimer.QuadPart;      

    }

    ~ CPrintfCodeTime(void)

    {           

        LARGE_INTEGER tTimer;
        QueryPerformanceCounter(&tTimer);
        double dbTime = double(tTimer.QuadPart - m_llTime);

        //獲取CPU的頻率
       QueryPerformanceFrequency(&tTimer);
       dbTime = dbTime/tTimer.QuadPart;
       m_strRunCode += vCode;
       char tBuf[100] = {0};
#ifndef __BORLANDC__
       //輸出調試信息
       sprintf_s(tBuf,"運行時間為%.3f毫秒\n" ,dbTime*1000);
#else
        sprintf(tBuf,"運行時間為%.3f毫秒\n",dbTime*1000);
#endif
        m_strName += tBuf;
        OutputDebugString(m_strName.c_str());
        m_strName.clear();

    }

    string m_strName;

    LONGLONG m_llTime;

};

本文出自 “阿木雪” 博客,謝絕轉載!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved