获取线程中某个函数执行完成所获得的CPU时间量

参考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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值