我有一個自己的GetTickCount()函數返回一個unsigned int(計數翻轉爲零上爲0xFFFFFFFF)經過時間與無符號計時單元計數/包裝
我不能測量的經過時間在:
unsigned int elapsed;
unsigned int start = GetTickCount();
LongOperation();
unsigned int stop = GetTickCount();
if (stop >= start)
elapsed = stop - start;
else
elapsed = (INT_MAX - start) + stop;
這是一樣的,如果我做一個演員簽名(時間跨度我措施總是少於什麼可以表示在一個有符號的整數 - 我想約24天)? :
int start = (int)GetTickCount();
LongOperation();
int elapsedTime = (int)GetTickCount() - start;
如果我看看.NET Environmet.TickCount屬性
:
計時單位計數將增加從零到的Int32 .. :: MaxValue的約24.9天,然後跳轉到的Int32。 。::。MinValue是一個負數,然後在接下來的24.9天內遞增到零。
所以,當我投我的GetTickCount()函數符號整數,我應該得到的.NET的行爲(發生在0x7FFFFFFF->爲0x80000000包裝)?
這個應該可以做測量經過時間如下(在另一篇文章中看到的):
int start = Environment.TickCount;
DoLongRunningOperation();
int elapsedTime = Environment.TickCount - start;
編號。流逝的時間可能適合整數,但爲'start'和'end'強制轉換爲有符號整數可能會給出錯誤的值。 – Chubsdad 2010-08-16 06:32:15