参考windows核心编程(第五版)
__int64 FileTimeToQuadWord ( PFILETIME pft)
{
//将FileTime转换成一个__int64的数据
return (Int64ShllMod32(pft->dwHighDateTime, 32) | pft->dwLowDateTime);
}
void PerformLongOperation()
{
FILETIME ftKernelTimeStart, ftKernelTimeEnd;
FILETIME ftUserTimeStart, ftUserTimeEdnd;
FILETIME ftDummy;
__int64 qwKernelTimeElapsed, qwUserTimeElapsed, qwTotalTimeElapsed;
GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
&ftKernelTimeStart, &ftUserTimeStart);
Func(); // 计算该函数所需的CPU时间量
GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
&ftKernelTimeEnd, &ftUserTimeEdnd);
//内核所用时间,线程执行内核模式下的操作系统代码所用时间的绝对值,以100ns为单位
qwKernelTimeElapsed = FileTimeToQuadWord( &ftKernelTimeEnd)
- FileTimeToQuadWord ( &ftKernelTimeStart);
//用户时间,线程执行该函数所用时间的绝对值,以100ns为单位
qwUserTimeElapsed = FileTimeToQuadWord( &ftUserTimeEdnd)
- FileTimeToQuadWord ( &ftUserTimeStart);
//前面该函数所获得的cpu总的时间
qwTotalTimeElapsed = qwKernelTimeElapsed + qwUserTimeElapsed;
}