程式執行時間為0的問題
阿新 • • 發佈:2019-02-20
今天為了檢測自己某些功能模組的時間消耗,發現使用了好幾種方法,得到的時間都是0 ,後來才發現是因為消耗的時間太少了,一般常用的方法得到的時間精度不夠,下面分享一下我的學習歷程。
1.一開始使用GetTickCount();,測試結果為0,具體程式碼:
DWORD dwStart = GetTickCount(); DWORD dwStart = timeGetTime(); m_String=getSystemName().c_str(); DWORD dwUsed = timeGetTime(); m_Time = dwUsed - dwStart;
2.使用 timeGetTime()函式,需要新增#include <Mmsystem.h>,自己測試結果為0
DWORD dwStart = timeGetTime(); //開始時間
m_String=getSystemName().c_str();
DWORD dwUsed = timeGetTime(); //結束時間
m_Time8 = dwUsed - dwStart; //消耗時間
還使用了clock()函式,也不行,最後在網上查到了一個以納秒計的函式,1秒=10億納秒。總算結果測試不為零了。具體程式碼:
先再標頭檔案內定義一行內函數:
inline unsigned GetCycleCount() { __asm _emit 0x0F __asm _emit 0x31 } 實際使用:
unsigned long t1,t2;
t1 = (unsigned long)GetCycleCount(); //開始時間
m_String = getSystemName().c_str();
t2 = (unsigned long)GetCycleCount();
m_Time = t2-t1;
結果截圖: