4. fprof - The File Trace Profiler
4 fprof - 文件跟踪分析器
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)
手册页以获取更多选项和参数trace
,profile
以及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运行时系统上。