Как я могу определить, что заставляет мои части отображаться так медленно? - PullRequest
3 голосов
/ 22 декабря 2011

Я работаю над приложением, которое должно визуализировать очень большую страницу, составленную из набора частичных элементов.Я могу видеть время рендеринга для каждой из моих частичек в журнале, и есть несколько, которые занимают более 500 миллисекунд.

Очевидно, что это недопустимо. Как я могу профилировать рендеринг этих партиалов ?Например, как я могу получить разбивку методов, вызываемых внутри них, и сказать: «О, я трачу X миллисекунд на использование Y link_to» и т. Д.

Я использую Ruby1.9.2-p290 (я могу использовать 1.9.3, если это полезно) и Rails 3.1.3.

1 Ответ

2 голосов
/ 22 декабря 2011

Я обычно использую для этого гем ruby_prof.

Установите драгоценный камень, а затем настройте фильтр around_filter, который выглядит следующим образом

def log_profile
  result =RubyProf.profile do
    yield
  end

  File.open(Rails.root.join("profile.html"),"w") do |out|
    printer = RubyProf::GraphHtmlPrinter.new(result)
    printer.print(out,:min_percent=>0)
  end
end

Это выведет профиль действия в profile.html, чтобы вы могли его изучить. В Ruby prof есть несколько форматеров вывода, с которыми вы можете играть. Не забывайте делать это при включенных cache_classes - вы не хотите, чтобы перезагрузка класса скрывала ваш взгляд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...