C++性能分析小工具
来源:互联网 发布:淘宝客服应聘面试技巧 编辑:程序博客网 时间:2024/04/28 13:13
自己做的性能分析"工具", 其实是一小段代码, 嵌入C++工程里用, 能统计出各函数的独占运行时间.
使用方法
1 包含头文件
2 在要分析的函数中添加一个宏(比较烦, 但也只能这样)
3 在退出程序前打印结果
原理
- 每个函数里放一个静态的"分析结果"(FunctionProfile)对象, 用来记录这个函数的分析结果.
- 每个函数里放一个非静态的"栈帧"(ProfilerStackFrame)对象, 并和相应的"分析结果"相关联, 用来统计一次调用的时间.
- 在"栈帧"的构造函数里记录调用的起始时间, 在析构函数里计算出独占时间, 累加到结果里.
- 程序结束前, 把全部"分析结果"按耗时排序, 输出.
线程安全性
支持多线程, 但会把所有线程的运行时间累加到一起, 分不清是那个线程耗时多, 那个耗时少.
运行结果:
profile result:
func_b(): 0.726132 10
func_a(): 0.723048 12
test(): 0.000138 1
ThreadFunc(): 0.000000 1
完整代码 (LINUX版的计时精度可能不够, 请自行换成高精度计时器)
Profiler.h
Profiler.cpp
test.cpp
- C++性能分析小工具
- java性能分析小工具--jconsole
- Java性能分析小工具 ---- jconsole
- HTTPS性能分析小工具HTTPStat
- java小工具-内存分析,线程分析,性能分析
- mapper.c 小工具
- mapper.c 小工具
- c语言小工具
- Android性能监控小工具
- linux性能监控小工具
- 文档词频分析小工具
- C#:图标生成小工具
- Android性能测试小工具Emmagee
- 数据库写入性能测试小工具
- Android性能测试小工具Emmagee
- android 性能测试小工具-GameBech
- TCP/IP协议分析-常用小工具
- 学以致用 C语言小工具-文件格式转换
- 我在公司都学到了什么
- ce 6.0 链接错误
- linux ftp命令使用,下载文件
- Amfphp与Flex交互:读取mysql数据
- 静态链接库LIB和动态链接库DLL的区别 创建和示例
- C++性能分析小工具
- 动态链接库dll,静态链接库lib, 导入库lib
- 静态链接库和动态链接库
- java过滤特殊字符
- Delphi函数和过程
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- 静态链接库(Lib)与动态链接库(DLL)的区别
- Symbian C++学习笔记连载一:Symbian基础知识
- 手机上网