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

使用以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 block。

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

是否有可能要求ruby-prof将有关产生的代码的信息放在ClassName#method_name的报告中?

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

版本0.9.0的ruby-prof允许方法消除 。 例如,要消除Integer#times ,请使用

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

以便

 def method_a 5.times {method_b} end 

将直接指示method_amethod_b之间的关系。

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