注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

tangxiao的博客

以为我是天才

 
 
 

日志

 
 
 
 

【转载】C/C++记录程序运行时间的N种方法汇总  

2015-06-24 16:14:02|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1.如如果只是要计算程序运行的时间,不需要第一个那么复杂。  
  <windows.h>   中的   GetTickCount()   就是干这个的。  

TimeStart=GetTickCount();

   .......

   TimeEnd=GetTickCount();

   TimeUsed=TimeEnd-TimeStart;

2. #include<stdio.h>  
  #include<time.h>  
  #include<conio.h>  
  int   main()  
  {  
  time_t stime   ,   etime   ;  
  time(   &stime   ); /* get   start   time */  
  getch(); /* Access */  
  time(   &etime   ); /* get   end   time */  
  printf(   "%ld\n"   ,   etime   -   stime   );  
  getch();  
  return   0;  
  }

3. class   CTimer  
  {  
  public:  
  CTimer() {QueryPerformanceFrequency(&m_Frequency);   Start();}  
  void Start() {QueryPerformanceCounter(&m_StartCount);}  
  double End() {LARGE_INTEGER   CurrentCount;QueryPerformanceCounter(&CurrentCount);return   double(CurrentCount.LowPart   -   m_StartCount.LowPart)   /   (double)m_Frequency.LowPart;}  
  private:  
  LARGE_INTEGER   m_Frequency;  
  LARGE_INTEGER   m_StartCount;  
  };  

 

4. VC的话有profile,在链接属性页勾选profile项,然后profile(在编译菜单下),各个函数时间都出来了

 

5. #include   <iostream>  
  #include   <ctime>  
  using   namespace   std;  
   
  int   max(int   x,int   y)  
  {  
        return   (x>y)?x:y;  
  }  
  int   main()  
  {  
          const   double   begin=(double)clock()/CLK_TCK;  
  for(int   i=10000;i>0;i--)  
  for(int   j=10000;j>0;j--)  
  max(i,j);  
          const   double   end=(double)clock()/CLK_TCK;  
  cout   <<begin<<"     "<<end;  
  return   0;  
  }

6.要最精确的有  
  LARGE_INTEGER   limtp;  
  QueryPerformanceFrequency(&limtp);//获得当前的计数频率,即每秒进行多少次计数  
  QueryPerformanceCounter(&limtp);//获取当前计数次数  
  基于cpu级的  
  时间是  
  (计数获取计数次数   -   开始获取计数次数)/(用QueryPerformanceFrequency获取的limtp.QuadPart)  
   
  即得到总共运行的秒数..
7. 问题已经解决了,在boost   library里面有个time   library,行了!
  评论这张
 
阅读(30)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018