提升性能:ShowTime类与精确计时工具
28 浏览量
更新于2024-08-27
收藏 146KB PDF 举报
在2004年6月的MSDN Magazine中,作者介绍了一种名为ShowTime的类,专门用于在C++应用中实现简单的性能监视。ShowTime类通过其构造函数和析构函数记录代码块执行的开始和结束时间,帮助开发者获取执行时间,例如:
```cpp
ShowTimest(_T("Totaltimeis:")); // 开始记录时间
// some lengthy operation
```
使用时,会在控制台输出或日志文件中记录类似“共耗时是:nnn毫秒”的消息,这里的nnn表示实例从创建到销毁所消耗的时间,以毫秒为单位。ShowTime类依赖于CRT中的clock函数获取进程启动后的毫秒数,尽管clock在某些情况下可能不够精确。
读者Robert Bocquier提出了一个改进方案,推荐使用timeGetTime函数,该函数提供更高的精度。在实际应用中,比如编写音乐应用程序,可能需要确保时间计时的准确性,因为::clock的粒度在不同Windows平台和版本下可能高达10毫秒,而timeGetTime则可以达到1毫秒级别。为了使用timeGetTime,程序需要先调用timeBeginPeriod设置计时粒度,然后在结束时调用timeEndPeriod关闭这个设置,例如:
```cpp
timeBeginPeriod(1); // 设置1毫秒粒度
// run performance test
timeEndPeriod(1); // 结束1毫秒粒度
```
在实践中,PerfTest.cpp示例程序可以从MSDN提供的代码下载,它演示了两种计时方法的差异,如图1所示,这在Windows XP上尤为明显,::clock的输出粒度为10毫秒,而timeGetTime则为1毫秒。通过比较这两种方法,开发者可以根据具体需求选择更为精准的性能监视手段。
2022-06-19 上传
2008-07-14 上传
点击了解资源详情
2009-02-27 上传
weixin_38637665
- 粉丝: 4
- 资源: 951
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建