C_C++ 各种计时函数

5 篇文章 0 订阅

http://blog.csdn.net/qq506124204/article/details/8134901


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

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

 

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值