跨平台的高精度计时类
2014-05-12 18:02
232 查看
windows环境用QueryPerformanceFrequency。
linux环境用gettimeofday。
两者都能精确到微妙us。
源码:
linux环境用gettimeofday。
两者都能精确到微妙us。
源码:
//****************************************************************************** //desc:time //name:mytimer.h //auth:zhouping //date:201400512 //****************************************************************************** #ifndef MYTIMER_H #define MYTIMER_H #ifdef WIN32 #include <windows.h> class MyTimer { private: LONGLONG _freq; LARGE_INTEGER _begin; LARGE_INTEGER _end; public: LONGLONG costTime; //花费的时间(精确到微秒us) public: MyTimer() { LARGE_INTEGER tmp; QueryPerformanceFrequency(&tmp); //QueryPerformanceFrequency():返回硬件支持的高精度计数器的频率 _freq = tmp.QuadPart; costTime = 0; } void Start() //开始计时 { QueryPerformanceCounter(&_begin); } void End() //结束计时 { QueryPerformanceCounter(&_end); costTime = (LONGLONG)((_end.QuadPart - _begin.QuadPart) * 1000000.0 / _freq); } void Reset() // 计时清0 { costTime = 0; } }; #else #include <sys/time.h> #include <unistd.h> class MyTimer { private: timeval _begin; timeval _end; public: long long costTime; //花费的时间(精确到微秒us) public: MyTimer() { costTime = 0; } void Start() //开始计时 { gettimeofday(&_begin, NULL); } void End() //结束计时 { gettimeofday(&_end, NULL); costTime = (_end.tv_sec - _begin.tv_sec) * 1000000ll + _end.tv_usec - _begin.tv_usec; } void Reset() // 计时清0 { costTime = 0; } }; #endif #endif //~MYTIMER_H
相关文章推荐
- mysql的utf8乱码
- 2013.4.A
- Unity3D环境下的GLSL shaders写法 — 纹理参数
- “command line option syntax error,Type command/?for help
- 用户路径设置到D盘
- Linux下配置samba服务器
- UrlRewriteFilter 学习笔记
- 教你杀 HANA session \HANA处理锁表
- 难点 点点boolean
- 音频audio/sound声卡驱动分析
- Androd 自定义进度条
- 关于Fragment的杂谈
- MySQL随机选取数据
- 杭电2001
- 基于'sessionStorage'与'userData'的类session存储
- echsop设置伪静态
- vc操作注册表
- Http 通过Get获取数据
- linux编程-进程简介
- C++ 详细解说 STL 排序(Sort)