我正在尝试使用 eprof 分析 Erlang 应用程序。结果表明大部分时间都花在了 dict 模块上,尽管我最感兴趣的分析模块并没有直接使用 dict,它的依赖项看起来有点像这样:
A-- B - dict
|- C - dict
A 是正在运行的进程(a gen_server)并使用模块 B 和 C,它们都使用 dict。如何判断哪个模块使用 dict 最多?
我正在尝试使用 eprof 分析 Erlang 应用程序。结果表明大部分时间都花在了 dict 模块上,尽管我最感兴趣的分析模块并没有直接使用 dict,它的依赖项看起来有点像这样:
A-- B - dict
|- C - dict
A 是正在运行的进程(a gen_server)并使用模块 B 和 C,它们都使用 dict。如何判断哪个模块使用 dict 最多?
为了解决类似的问题,我创建了从 dbg 跟踪格式到 callgrind 格式的转换器。它帮助我使用 kcachegrind 作为具有时间成本信息的函数调用层次结构的可视化工具。
这是一个帮助查找时间花在哪里的视图示例 https://raw.github.com/virtan/eep/master/doc/sshot6.png