【问题标题】:Is it possible to ignore irrelevant methods when profiling ruby applications?在分析 ruby​​ 应用程序时是否可以忽略不相关的方法?
【发布时间】:2010-02-11 00:47:09
【问题描述】:

使用 ruby​​-prof 时,以 graph-html 模式打印出来,一种方法的报告显示(有一些截图)

%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#each 中的 yield 块。

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

是否可以要求 ruby​​-prof 将生成代码的信息放在ClassName#method_name 的报告中?

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

【问题讨论】:

    标签: ruby profiling ruby-prof


    【解决方案1】:

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

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

    这样

    def method_a
      5.times {method_b}
    end
    

    会直接表示method_amethod_b的关系。

    【讨论】:

      【解决方案2】:

      如果您不介意低技术含量,也许您想考虑this。您所需要的只是能够暂停调试器。保证,它会快速找到您可以通过任何其他方式找到的任何内容,并且不会向您显示任何不相关的代码。

      【讨论】:

      • 您的技术没有提供比现有信息更多的信息。否决票并不表示“这个答案是错误的”,而是“这个答案没有用”。
      • @Andrew:问题是“在分析 ruby​​ 应用程序时是否可以忽略不相关的方法?”。停止方法会自动忽略不相关的方法,它会定位相关的方法,以及这些方法中相关的代码行,所以如果没有用,它也没什么用。我认为反对票实际上是在说“这不是我所学的。”
      • @Andrew:关于该主题,您可能想知道的更多信息:stackoverflow.com/questions/1777556/alternatives-to-gprof/…
      猜你喜欢
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2018-09-09
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多