运行时间

C/C++ code
  
  
FILETIME ct; FILETIME et; FILETIME kt; FILETIME ut; __int64 ktStart = 0 ; __int64 utStart = 0 ; __int64 ktStop = 0 ; __int64 utStop = 0 ; LARGE_INTEGER ss,ee,fq; HANDLE cur; int i,j,dump; cur = GetCurrentThread(); QueryPerformanceCounter( & ss); // QueryPerformanceCounter的单位应该是cpu的时间周期时间,1/cpu频率 GetThreadTimes(cur, & ct, & et, & kt, & ut); // 起始时的内核时间和用户时间。不过精度也就10ms级 ktStart = (((__int64)kt.dwHighDateTime) << 32 ) + (__int64)kt.dwLowDateTime; utStart = (((__int64)ut.dwHighDateTime) << 32 ) + (__int64)ut.dwLowDateTime; // put your code here, such as: Sleep( 10000 ); // sleep消耗的不是程序所用的时间。scanf函数等待的时间等也一样不是程序消耗的时间 for (i = 0 ;i < 10000 ;i ++ ) { dump = 0 ; for (j = 0 ;j < 10000 ;j ++ ) { dump += j * j; } } // finish GetThreadTimes(cur, & ct, & et, & kt, & ut); // 结束时的内核时间和用户时间 ktStop = (((__int64)kt.dwHighDateTime) << 32 ) + (__int64)kt.dwLowDateTime; utStop = (((__int64)ut.dwHighDateTime) << 32 ) + (__int64)ut.dwLowDateTime; printf( " Kernel Time: %llu ms/n " , (ktStop - ktStart) / 10000 ); // FILETIME的单位是100ns,除10000变ms printf( " User Time: %llu ms/n " , (utStop - utStart) / 10000 ); QueryPerformanceCounter( & ee); QueryPerformanceFrequency( & fq); // QueryPerformanceCounter高精度的,但记得并不是代码实际消耗的时间。会把sleep的那10秒也计入。 printf( " Time: %llu us/n " , (ee.QuadPart - ss.QuadPart) / (fq.QuadPart / 1000000 ));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值