Можно ли игнорировать ненужные методы при профилировании приложений ruby? - PullRequest
2 голосов
/ 11 февраля 2010

При использовании 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, что занимает много времени,но блок yield в Hash # каждый.

Просмотр отчета для Hash # каждый вводит в заблуждение, поскольку он сообщает обо всем коде, вызываемом всем, что использует Hash # каждый.

Можно ли попросить ruby-prof добавить информацию о полученном коде в отчет ClassName#method_name?

Использование min_percent или переключение на плоский профиль, похоже, не помогает.

Ответы [ 2 ]

2 голосов
/ 27 июля 2010

Версия 0.9.0 ruby-prof позволяет исключение метода . Например, чтобы исключить Integer#times, используйте

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

так что

def method_a
  5.times {method_b}
end

будет указывать связь между method_a и method_b напрямую.

0 голосов
/ 11 февраля 2010

Если вы не возражаете против низких технологий, возможно, вы захотите рассмотреть это . Все, что вам нужно, это иметь возможность приостановить отладчик. Гарантированный, он быстро найдет все, что вы можете найти любым другим способом, и не покажет вам никакого неуместного кода.

...