【发布时间】:2013-01-09 17:09:42
【问题描述】:
我正在尝试使用 eprof 分析 Erlang 应用程序。结果表明大部分时间都花在了 dict 模块上,虽然我最感兴趣的 profiling 模块并没有直接使用 dict,它的依赖项看起来有点像这样:
A-- B - dict
|- C - dict
A 是正在运行的进程(一个 gen_server)并使用模块 B 和 C,它们都使用 dict。如何判断哪个模块使用 dict 最多?
【问题讨论】:
-
您可以尝试调整两个模块之一来使用 orddict 吗?如果您尝试每种方式(B/dict + C/orddict,然后是 B/orddict + C/dict),您可能有足够的信息来回答问题。
-
有趣的方法,但我设法通过使用 fprof 来解决这个问题,而无需更改代码,它显示了函数(包括它的调用)和其他有用的东西,如 gc 和进程暂停。留下这个问题以防万一有人要添加任何其他内容。
-
你可以尝试使用this escript我写的将fprof输出转换为callgrind输出并用kcachegrind或类似的东西可视化它
-
这听起来很棒,你知道任何基于 gnome 的 GUI 吗?
-
我不知道任何基于 gnome 的替代方案,但我在 gnome 上运行 kcachegrind 就好了。
标签: erlang