如何計算某個函數(重複調用)需要的毫秒數?
我想到:
CTime::GetCurrentTM()
之前,
CTime::GetCurrentTM()
後,以毫秒爲單位的MFC測量功能
,然後將結果插入到CTimeSpan diff = after - before
。
最後將該差異存儲到全局成員,總結所有差異,因爲我想知道此函數花費的總時間。
但它會在幾秒鐘內給出答案,而不是毫秒。
如何計算某個函數(重複調用)需要的毫秒數?
我想到:
CTime::GetCurrentTM()
之前,
CTime::GetCurrentTM()
後,以毫秒爲單位的MFC測量功能
,然後將結果插入到CTimeSpan diff = after - before
。
最後將該差異存儲到全局成員,總結所有差異,因爲我想知道此函數花費的總時間。
但它會在幾秒鐘內給出答案,而不是毫秒。
MFC是C++,對不對?
如果是這樣,您可以使用clock()
。
#include <ctime>
clock_t time1 = clock();
// do something heavy
clock_t time2 = clock();
clock_t timediff = time2 - time1;
float timediff_sec = ((float)timediff)/CLOCKS_PER_SEC;
這通常會給你毫秒的精度。
如果您使用MFC,最好的方法是使用WIN API。因爲你只是爲了計算時差而擔心,下面的函數可能會適合你。
GetTickCount64()
直接返回number of milli seconds that has elapsed因爲這個系統被啓動。
如果你不打算讓您的系統長期(準確地說超過49.7天)並,快一點的版本 - GetTickCount()功能
藉助COleDateTime衆所周知,基於毫秒內工作,因爲它存儲時間戳在它的m_dt變量上,它是DATE類型的,因此具有用於預期目的的分辨率。
我可以建議你立足於
DATE now= (DATE) COleDateTime::GetCurrentTime();
你的時間,並做相應的計算之後。
因爲它基於系統啓動的時間,所以在我看來,這種方法有一個問題:當計算機很少重新啓動時:它可能使計數器溢出! – sergiol