非常教程

Erlang 20参考手册

tools

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服务器。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1