2012-12-25 37 views
6

如何計算某個函數(重複調用)需要的毫秒數?
我想到:
CTime::GetCurrentTM()之前,
CTime::GetCurrentTM()後,以毫秒爲單位的MFC測量功能

,然後將結果插入到CTimeSpan diff = after - before
最後將該差異存儲到全局成員,總結所有差異,因爲我想知道此函數花費的總時間。

但它會在幾秒鐘內給出答案,而不是毫秒。

回答

6

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; 

這通常會給你毫秒的精度。

1

如果您使用MFC,最好的方法是使用WIN API。因爲你只是爲了計算時差而擔心,下面的函數可能會適合你。

GetTickCount64() 

直接返回number of milli seconds that has elapsed因爲這個系統被啓動。

如果你不打算讓您的系統長期(準確地說超過49.7天)並,快一點的版本 - GetTickCount()功能

+0

因爲它基於系統啓動的時間,所以在我看來,這種方法有一個問題:當計算機很少重新啓動時:它可能使計數器溢出! – sergiol

0

藉助COleDateTime衆所周知,基於毫秒內工作,因爲它存儲時間戳在它的m_dt變量上,它是DATE類型的,因此具有用於預期目的的分辨率。

我可以建議你立足於

DATE now= (DATE) COleDateTime::GetCurrentTime(); 

你的時間,並做相應的計算之後。

相關問題