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

发布时间 - 2026-01-11 02:14:50    点击率:

 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 ms\n", 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 ; 
} 

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


# C++实现统计代码运行时间计时器  # C++  # 时间计时器的实现  # Linux C/C++ timeout命令实现运行具有时间限制功能  # C++实现统计代码运行时间的示例详解  # 详解如何在C/C++中测量一个函数或功能的运行时间  # C++中测试程序运行时间的几种方法总结  # 会有  # 计时器  # 希望能  # 谢谢大家  # 网上  # NULL  # return  # tv_sec  # struct  # gettimeofday  # timeval  # amp  # start_time  # unsigned  # end_time  # tv_usec  # main  # int  # class  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  香港服务器租用费用高吗?如何避免常见误区?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel定时任务怎么设置_Laravel Crontab调度器配置  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何基于云服务器快速搭建个人网站?  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel如何处理异常和错误?(Handler示例)  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Swift中swift中的switch 语句  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何快速查询域名建站关键信息?  怎么用AI帮你为初创公司进行市场定位分析?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  javascript读取文本节点方法小结  微信小程序 scroll-view组件实现列表页实例代码  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何在阿里云购买域名并搭建网站?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何在建站宝盒中设置产品搜索功能?  利用vue写todolist单页应用  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  如何在阿里云服务器自主搭建网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在Ubuntu系统下快速搭建WordPress个人网站?  微信小程序 canvas开发实例及注意事项  北京专业网站制作设计师招聘,北京白云观官方网站?  javascript基于原型链的继承及call和apply函数用法分析  进行网站优化必须要坚持的四大原则  Laravel如何使用Gate和Policy进行授权?(权限控制)  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  微信推文制作网站有哪些,怎么做微信推文,急?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Android自定义listview布局实现上拉加载下拉刷新功能  利用JavaScript实现拖拽改变元素大小  如何在橙子建站中快速调整背景颜色?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】