eprof
eprof
模块
eprof
模块摘要
Erlang的时间分析工具
描述
该模块eprof
提供了一组用于Erlang程序时间分析的函数,以了解如何使用执行时间。分析是使用Erlang跟踪BIF完成的。在分析开始时启用追踪指定的一组进程的本地函数调用,并且在分析停止时禁用。
使用Eprof时,预计程序执行会减慢。
出口
start() -> {ok,Pid} | {error,Reason}
类型
启动eprof服务器,该服务器保存所收集数据的内部状态。
start_profiling(Rootset) -> profiling | {error, Reason}start_profiling(Rootset,Pattern) -> profiling | {error, Reason}start_profiling(Rootset,Pattern,Options) -> profiling | {error, Reason}
类型
开始分析Rootset
(以及从中产生的任何新进程)中的进程。有关任何概要分析过程中活动的信息都存储在Eprof数据库中。
Rootset
是一个pid和注册名称的列表。
profiling
如果可以对所有进程启用跟踪,则返回该函数Rootset
,否则返回error
。
可以选择一种模式来缩小分析。例如,可以选择一个特定的模块,只有在该模块中执行的代码才会被分析。
该set_on_spawn
选项将对由rootset中的进程产生的所有进程启用通话时间跟踪。这是默认行为。
stop_profiling() -> profiling_stopped | profiling_already_stopped
停止start_profiling/1
或开始分析profile/1
。
profile(Fun) -> profiling | {error, Reason}profile(Fun, Options) -> profiling | {error, Reason}profile(Rootset) -> profiling | {error, Reason}profile(Rootset,Fun) -> {ok, Value} | {error,Reason}profile(Rootset,Fun,Pattern) -> {ok, Value} | {error, Reason}profile(Rootset,Module,Function,Args) -> {ok, Value} | {error, Reason}profile(Rootset,Module,Function,Args,Pattern) -> {ok, Value} | {error, Reason}profile(Rootset,Module,Function,Args,Pattern,Options) -> {ok, Value} | {error, Reason}
类型
这个函数首先产生一个P
评估Fun()
或者评估的过程apply(Module,Function,Args)
。然后,它开始分析P
和处理Rootset
(以及从它们产生的任何新进程)。有关任何概要分析过程中活动的信息都存储在Eprof数据库中。
Rootset
是PIDS和注册名称的列表。
如果跟踪可以为启用P
,并在所有过程Rootset
,函数返回{ok,Value}
时Fun()
/ apply
与价值回报Value
,或者{error,Reason}
如果Fun()
/ apply
失败,退出原因Reason
。否则它会{error, Reason}
立即返回。
该set_on_spawn
选项将对由rootset中的进程产生的所有进程启用通话时间跟踪。这是默认行为。
程序员必须确保作为参数给出的函数是真正同步的,并且在函数返回值后不继续工作。
analyze() -> okanalyze(Type) -> okanalyze(Type,Options) -> ok
类型
当分析已停止以显示每个进程的结果时调用此函数,即:
- 每个过程使用了多少时间,以及
- 在这个函数调用中这个时间已经用完了。
当分析已停止时,analyze
通过total
选项调用以显示每个函数调用的结果,即函数调用时间已用于哪个函数。
时间表示为总时间的百分比和绝对时间。
log(File) -> ok
类型
该函数可确保将显示的结果analyze/0,1,2
同时打印到文件File
和屏幕上。
stop() -> stopped
停止Eprof服务器。