C/C++各种计时函数

对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5 种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock()不仅可以用在Windows 系统,也可以用于Linux系统。

在Windows系统下三种,使用Windows提供的API接口timeGetTime()、 GetTickCount()及QueryPerformanceCounter()来完成。


[cpp] view plaincopyprint?
  1. #include <windows.h>
  2. #include <time.h> //time_t time() clock_t clock()
  3. #include <Mmsystem.h> //timeGetTime()
  4. #pragma comment(lib, "Winmm.lib") //timeGetTime()
  5. int main(int argc, char* argv[])
  6. {
  7. //用time()来计时 秒
  8. time_t timeBegin, timeEnd;
  9. timeBegin = time(NULL);
  10. Sleep(800);
  11. timeEnd = time(NULL);
  12. printf("time %d\n", timeEnd - timeBegin);
  13. //用clock()来计时 毫秒
  14. clock_t clockBegin, clockEnd;
  15. clockBegin = clock();
  16. Sleep(800);
  17. clockEnd = clock();
  18. printf("clock %d\n", clockEnd - clockBegin);
  19. //用timeGetTime()来计时 毫秒
  20. DWORD dwBegin, dwEnd;
  21. dwBegin = timeGetTime();
  22. Sleep(800);
  23. dwEnd = timeGetTime();
  24. printf("timeGetTime %d\n", dwEnd - dwBegin);
  25. //用GetTickCount()来计时 毫秒
  26. DWORD dwGTCBegin, dwGTCEnd;
  27. dwGTCBegin = GetTickCount();
  28. Sleep(800);
  29. dwGTCEnd = GetTickCount();
  30. printf("GetTickCount %d\n", dwGTCEnd - dwGTCBegin);
  31. //用QueryPerformanceCounter()来计时 微秒
  32. LARGE_INTEGER large_interger;
  33. double dff;
  34. __int64 c1, c2;
  35. //获取是否支持精确定时器。 定时器的频率
  36. if( QueryPerformanceFrequency(&large_interger) )
  37. {
  38. dff = large_interger.QuadPart;
  39. //获取定时器的值
  40. QueryPerformanceCounter(&large_interger);
  41. c1 = large_interger.QuadPart;
  42. Sleep(800);
  43. //获取定时器的值
  44. QueryPerformanceCounter(&large_interger);
  45. c2 = large_interger.QuadPart;
  46. printf("本机高精度计时器频率%lf\n", dff);
  47. printf("第一次计时器值%I64d 第二次计时器值%I64d 计时器差%I64d\n", c1, c2, c2 - c1);
  48. printf("计时%lf毫秒\n", (c2 - c1) * 1000 / dff);
  49. printf("\n");
  50. }
  51. return 0;
  52. }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值