C++实现统计代码运行时间计时器的简单实例分享

—-想了解C++实现统计代码运行时间计时器的简单实例分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

 C++实现统计代码运行时间计时器的简单实例

一、前言

         这里记下从网上找到的一些自己比较常用的C++计时代码

二、Linux下精确至毫秒

  #include <sys/time.h>   #include <iostream>   #include <time.h>   double get_wall_time()   {     struct timeval time ;     if (gettimeofday(&time,NULL)){       return 0;     }     return (double)time.tv_sec + (double)time.tv_usec * .000001;   }      int main()   {     unsigned int t = 0;     double start_time = get_wall_time()     while(t++<10e+6);     double end_time = get_wall_time()     std::cout<<"循环耗时为:"<<end_time-start_time<<"ms";     return 0;   }   

三、Windows下精确至毫秒

  #include <windows.h>   #include <iostream>      int main()   {     DWORD start, stop;     unsigned int t = 0;     start = GetTickCount();     while (t++ < 10e+6);     stop = GetTickCount();     printf("time: %lld msn", stop - start);     return 0;   }   

试验中,发现貌似getTickCount函数会有10几毫秒的误差,囧。。。

四、Windows下精确至微秒

  //MyTimer.h//   #ifndef __MyTimer_H__    #define __MyTimer_H__    #include <windows.h>       class MyTimer   {   private:     int _freq;     LARGE_INTEGER _begin;     LARGE_INTEGER _end;      public:     long costTime;      // 花费的时间(精确到微秒)       public:     MyTimer()     {       LARGE_INTEGER tmp;       QueryPerformanceFrequency(&tmp);//QueryPerformanceFrequency()作用:返回硬件支持的高精度计数器的频率。           _freq = tmp.QuadPart;       costTime = 0;     }        void Start()      // 开始计时      {       QueryPerformanceCounter(&_begin);//获得初始值      }        void End()        // 结束计时      {       QueryPerformanceCounter(&_end);//获得终止值        costTime = (long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq);     }        void Reset()      // 计时清0      {       costTime = 0;     }   };   #endif       //main.cpp   #include "MyTimer.h"   #include <iostream>         int main()   {     MyTimer timer;     unsigned int t = 0;      timer.Start();     while (t++ < 10e+5);     timer.End();      std::cout << "耗时为:" << timer.costTime << "us";     return 0 ;   }   

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/488314.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐