使用以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
或切换到平面配置文件似乎没有帮助。
答案 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_a
和method_b
之间的关系。
答案 1 :(得分:0)
如果你不介意低技术,也许你想考虑this。您只需要能够暂停调试器。保证,它会很快找到你能找到的任何其他方式,而不是向你显示任何不相关的代码。