跨平台的模块时间统计套件(C++编写)
来源:互联网 发布:淘宝淘金币半币抢购 编辑:程序博客网 时间:2024/06/05 07:36
在编写时间密集型程序时,我们经常需要统计某些模块(或函数)的时间消耗。在以往实践中,这往往需要添加大量的测试代码,费时费力。正好我目前在公司开发的各类行情FeedHandler恰好也是时间密集型程序,也常常需要测试模块的时间消耗,因此我开发了一个小套件,极大简化了程序各模块的时间统计。
套件开源,可至http://download.csdn.net/detail/great3779/4139994免费下载使用。
首先通过Demo看看套件运行的效果:Demo代码如下:
#include "stdafx.h"#include <Windows.h>// just include for testing demo.#include "TimerKitWrapper.h"#include <sstream>using namespace std;void test(int i){stringstream ss;//ss << __FUNCTION__ << "_" << i;ss << "test" << "_" << i;TUnit tu(ss.str());RegisterUnit(tu);Sleep(100);}int _tmain(int argc, _TCHAR* argv[]){// 主线程中定义一个TKit对象即可TKit tk;TUnit tu("_tmain");RegisterUnit(tu);{// 模块中定义一个测时单件并注册// function为待测时模块名,windows下可用__FUNCTION__获取函数名TUnit tu("function");// 注册至测时套件RegisterUnit(tu);Sleep(400);}for(int i = 0; i < 3; ++i){test(i);}return 0;}
Demo运行效果如下:
从Demo程序可以看出,测时套件的使用非常简单:仅需在主线程中定义一个TKit对象,然后在需要统计时间的模块内注册TUnit测时单件即可。
待程序运行结束后,会在最后输出各模块的统计时间。使用方便,显示明快!
几点说明:
1. 计时精度精确到毫秒级(多数情况下够用了)。
2. 示例套件仅采用了控制台的结果输出方式,感兴趣的朋友可以扩展为其他输出方式(例如文件, xml等)
3. 套件线程安全。不过如果在多线程中同时注册名称完全相同的测试单件,则套件运行结果未定义(但不会崩溃)。
当然,也可以对CTimerKit::AddTime加互斥保护消除未定义的结果,有兴趣的朋友可以试试。
4. 添加了两个外壳类CTimerKitWrapper和CTimerUnitWrapper是为了隐藏代码的实现细节,以便将套件封装成dll形式。
有兴趣的朋友可以将其封装成dll(这还是比较简单的)。
- 跨平台的模块时间统计套件(C++编写)
- android平台中编写jni模块的方法(1)
- apache 模块编写(c++)
- apache 模块编写(c++)
- apache 模块编写(c++)
- 如何编写跨平台C/C++代码的一些断想
- C编写的跨平台线程池 - 基于POSIX threads
- 如何编写跨平台的C/C++代码
- 模块手机Project Ara的MDK(Module Developers Kit)模块开发套件
- C语言的模块编写规范
- Mac下 lua C模块的编写
- C 编写lua模块(1)
- Linux平台基于C编写的文本通信平台
- c统计时间
- 编写跨平台的程序
- 跨平台CMake的编写
- Python的C扩展模块的编写(Anaconda+VS2013,python3.5和c++)
- 跨平台C、C++代码注意的事项及如何编写跨平台的C/C++代码
- objective-C 中使用@Class和 #import区别
- SimpleDateFormat使用详解
- 把路由器变成音乐播放器和网络收音机,支持摇控
- DataTable分组求和
- 颜色空间转换YCbCr2RGB/RGB2YCbCr/YCbCr2HSI/HSI2YCbCr/YCbCr2TSL/TSL2YCbCr
- 跨平台的模块时间统计套件(C++编写)
- 几种通讯协议的比较
- Android学习第12课—常用控件(二)
- Rational AppScan 扫描大型网站
- c++ mem开头函数
- deb ipa pxl
- Javascript----文件操作
- 关于IE9卸载的解决方案
- Android Service 的使用(三)----远程Service的调用