Erlang性能分析工具
@([02] erlang原创)[erlang,工具]
[TOC]
cprof 计算函数调用次数
- 启动cprof:
cprof:start().
- 暂停cprof:
cprof:pause().
- 退出cprof:
cprof:stop().
eprof 计算函数运行时间的百分比
- 启动eprof服务器:
eprof:start().
- 开始profiling:
eprof:start_profiling([self()]).
- 停止profiling:
eprof:stop_profiling().
- 分析结果:
eprof:analyze().
- 退出eprof:
eprof:stop().
eprof主要优点是对运行时系统影响较小,所以一般只有线上分析时才会用到。
fprof
大部分时候我们在线下版本做性能优化时会选择fprof,原因如下:
优点
1. 提供的信息最为详细
2. 将trace存储到文件中
3. 可进行较长运行时间的性能分析
使用
1. 启动服务:fprof:start().
2. 启动应用:fprof:trace(start).
3. 停止应用:fprof:trace(stop).
4. 开始profiling:fprof:profile().
5. 分析:fprof:analyse().
%是一种标记,每一个“段落”中,%表示被调用的函数主体,%以上为调用它的函数,%以下为它调用的函数。“段落”中的CNT列表示被调用次数,Acc表示包括%之上的函数在内所花费的时间,own表示不包括%之上的函数所用的时间。
timer
timer模块中的tc函数可以测试某个函数的执行时间:timer:tc(M,F,C)
返回结果是单位是微秒