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


原创粉丝点击