Drecik学习经验分享
转载请注明出处:http://blog.csdn.net/drecik__/article/details/8093724
如果是一般精度要求可以使用GetThreadTimes和GetProcessTimes函数来获取时间,原型如下:
// 以下获得的时间都是以100ns为单位,从1601/01/01子时开始计算的时间;
BOOL GetThreadTimes(
HANDLE hThread, // 线程句柄;
LPFILETIME lpCreationTime, // 线程创建时间;
LPFILETIME lpExitTime, // 线程退出时间,如果仍在运行,则未定义;
LPFILETIME lpKernelTime, // 线程在内核模式下运行操作系统代码所用的时间;
LPFILETIME lpUserTime // 线程运行用户代码所用的时间;
);
BOOL GetProcessTimes(
HANDLE hProcess, // 进程时间;
LPFILETIME lpCreationTime, // 四个参数同线程;
LPFILETIME lpExitTime, // 但是指的是进程中所有线程的时间总和;
LPFILETIME lpKernelTime,
LPFILETIME lpUserTime
);
如果是想高精度要求可以使用下面函数:
BOOL QueryThreadCycleTime (
HANDLE ThreadHandle, // 线程句柄;
PULONG64 CycleTime // 线程所用的时钟周期数;
);
BOOL QueryProcessCycleTime (
HANDLE ProcessHandle, // 进程句柄;
PULONG64 CycleTime // 进程中所有线程使用的时钟周期数;
);
BOOL QueryPerformanceFrequency(
LARGE_INTEGER *lpFrequency // 获得时钟频率;
);
BOOL QueryPerformanceCounter(
LARGE_INTEGER *lpPerformanceCount // 当前使用的时钟数;
);