非常教程

Erlang 20参考手册

tools

4. fprof - The File Trace Profiler

fprof 是一个分析工具,可以用来了解不同功能消耗的处理时间以及在哪些进程中的情况。

fprof使用跟踪时间戳来收集分析数据。因此,不需要特殊编译要分析的任何模块。

fprof从主机OS显示挂钟时间,假定操作系统调度将以公平的方式随机加载配置文件功能。无论自己的时间,即对自己的执行使用功能的时间,累计时间即执行时间,包括调用的函数。

分析主要分三个步骤进行:

1跟踪; 如前段所述,提交文件。2性能分析; 跟踪文件被读取并且原始配置文件数据被收集到节点上的内部RAM存储器中。在此步骤中,跟踪数据可能会以文本格式转储到文件或控制台。3分析; 原始配置文件数据被排序并以文本格式转储到文件或控制台。

由于fprof使用跟踪文件,运行时性能下降最小化,但仍然远远忽略不计,尤其是对于自己使用文件系统的程序而言。放置跟踪文件的位置也很重要,例如在Solaris /tmp上通常是一个不错的选择,而任何NFS挂载的磁盘都是糟糕的选择。

Fprof还可以跳过文件步骤,并跟踪在运行时执行分析的跟踪程序进程。

以下部分显示了如何使用Fprof进行配置的一些示例。另见参考手册fprof(3)

来自源代码的4.1分析

如果您可以编辑和重新编译源代码,则可以方便地插入fprof:trace(start)fprof:trace(stop)在代码被分析之前和之后。所有产生的过程也被追踪。如果你想要使用默认尝试的其他文件名fprof:trace(start, "my_fprof.trace")

然后读取跟踪文件并使用fprof:profile()或者可能fprof:profile(file, "my_fprof.trace")为非默认文件名创建原始配置文件数据。

最后,在控制台上创建一个提供信息的表格fprof:analyse(),或者在文件中fprof:analyse(dest, []),或者甚至fprof:analyse([{dest, "my_fprof.analysis"}, {cols, 120}])可以为非默认文件名列出更广泛的列表。

请参阅fprof(3)手册页以获取更多选项和参数traceprofile以及analyse

4.2分析函数

如果您有一个函数执行您想要分析的任务,并且该函数在分析应该停止时返回,则使用起来很方便。fprof:apply(Module, Function, Args)与追踪步骤相关。

如果跟踪应该在函数返回后继续,例如,如果它是一个启动函数,可以生成要分析的进程,则可以使用fprof:apply(M, F, Args, [continue | OtherOpts])。跟踪必须在稍后的适当时间停止使用fprof:trace(stop)

4.3立即分析

还可以立即追踪到创建原始配置文件数据的配置文件过程,即将跟踪和配置文件步骤短路,以便不使用文件系统。

做这样的事情:

{ok, Tracer} = fprof:profile(start),
fprof:trace([start, {tracer, Tracer}]),
%% Code to profile
fprof:trace(stop);

这会减少文件系统的负担,但更多的是在Erlang运行时系统上。

Erlang 20

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

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