主要就是GetProcessTimes和GetThreadTimes这两个函数,它们获得的时间都是FILETIME,下面的程序包含了获得两个FILETIME的差(ms)的办法。
如果要显示FILETIME,可以用FileTimeToSystemTime这个函数()
补充,这里有一个跨平台的版本:
()
1 #include "stdafx.h" 2 #include3 #include 4 5 int GetMSBetweenFileTime(PFILETIME ft1, PFILETIME ft2) 6 { 7 ULARGE_INTEGER ul1; 8 ULARGE_INTEGER ul2; 9 10 ul1.LowPart = ft1->dwLowDateTime;11 ul1.HighPart = ft1->dwHighDateTime;12 13 ul2.LowPart = ft2->dwLowDateTime;14 ul2.HighPart = ft2->dwHighDateTime;15 16 ULARGE_INTEGER uliRetValue;17 uliRetValue.QuadPart = ul2.QuadPart - ul1.QuadPart;18 uliRetValue.QuadPart /= 10;19 uliRetValue.QuadPart /= 1000;20 21 return int(uliRetValue.QuadPart);22 }23 24 int _tmain(int argc, _TCHAR* argv[])25 {26 FILETIME cpuTime;27 FILETIME sysTime;28 FILETIME createTime;29 FILETIME exitTime;30 31 BOOL c1 = GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &sysTime, &cpuTime); 32 33 for(int i = 0; i < 1000; i++)34 std::cout << i << std::endl;35 36 Sleep(3000);37 FILETIME cpuTime2;38 FILETIME sysTime2;39 FILETIME createTime2;40 FILETIME exitTime2;41 42 BOOL c2 = GetProcessTimes(GetCurrentProcess(), &createTime2, &exitTime2, &sysTime2, &cpuTime2);43 44 std::cout << "sysTime:" << GetMSBetweenFileTime(&sysTime, &sysTime2) << std::endl;45 std::cout << "cpuTime:" << GetMSBetweenFileTime(&cpuTime, &cpuTime2) << std::endl;46 std::cout << "Done";47 }