在分析ruby应用程序时是否可以忽略不相关的方法?

时间:2010-02-11 00:47:10

标签: ruby profiling ruby-prof

使用以graph-html模式打印的ruby-prof时,一种方法的报告说(有一些剪辑)

%Total       %Self       Total       Self    Wait    Child       Calls      Name    Line
52.85%       0.00%       51.22       0.00    0.00    51.22       1  ClassName#method_name  42
                         51.22       0.00    0.00    51.22       1/3        Hash#each  4200

显然,这不是Hash#each花了很长时间,而是Hash#中的yield块。

查看Hash#的报告每个都令人困惑,因为它报告了使用Hash#each的所有代码调用的所有代码。

是否可以让ruby-prof在ClassName#method_name的报告中提供有关已产生代码的信息?

使用min_percent或切换到平面配置文件似乎没有帮助。

2 个答案:

答案 0 :(得分:2)

ruby​​-prof的0.9.0版允许method elimination。例如,要消除Integer#times,请使用

result = RubyProf.stop
result.eliminate_methods!([/Integer#times/])

这样

def method_a
  5.times {method_b}
end

会直接指出method_amethod_b之间的关系。

答案 1 :(得分:0)

如果你不介意低技术,也许你想考虑this。您只需要能够暂停调试器。保证,它会很快找到你能找到的任何其他方式,而不是向你显示任何不相关的代码。