Рендеринг хамла частично занимает много времени ... почему? - PullRequest
4 голосов
/ 15 ноября 2011

Приложение My Rails 3.0 на ruby ​​1.8.7 содержит Haml 3.1.3.Большинство представлений являются шаблонами haml, для их рендеринга на моем компьютере в производственном режиме требуется около 0,5-5 мс.

Сказав это, несколько частичных операций занимают гораздо больше времени.300 мс до 900 мс для 30-60 линий хамла.Должно быть что-то, как я это использую, но как я могу отладить, что не так?Тесты последовательны и воспроизводимы.

Я не уверен в возможных источниках ошибки:

  • глубокое частичное вложение?(3-5 уровней)
  • глубокое вложение хамла?(4-8 уровней)
  • использование помощников блоков?
  • много переводов?
  • использование haml с formtastic 2.0?
  • использование построителей форм для вложенныхформы?

Любая помощь приветствуется.

Ответы [ 4 ]

1 голос
/ 11 августа 2016

Более поздний способ исправить это - Hamlit , высокопроизводительная реализация Haml с некоторыми ограничениями по производительности.Он требует 8,24-кратного ускорения.

Кроме того, не зависит от Haml, но посмотрите списки multi-fetch gem .

1 голос
/ 28 ноября 2012

Оказалось, что в Formtastic 2.0 есть несколько вещей:

  • Множество поисков объектов, не кэшированных
  • много переводов, без кэширования
  • Использование блоков try… rescue, которые сильно замедлили его

Исправления были добавлены в Formtastic 2.1 и выше, что делает его намного быстрее. Слава Саша Конецке за предоставление патчей.

0 голосов
/ 19 февраля 2015

положить в .bashrc:

export RUBY_GC_HEAP_INIT_SLOTS=1000000
export RUBY_HEAP_SLOTS_INCREMENT=500000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=50000000

Источник и перезапуск сервера

$> source ~/.bashrc
$> rails s

В зависимости от вашей проблемы, это может ускорить рендеринг ваших партиалов (в моем случае среднее время рендеринга увеличилось в 3 раза).

0 голосов
/ 12 июня 2012

Скорее всего, это сборщик мусора. Смотрите эти сообщения:

http://www.williambharding.com/blog/uncategorized/rails-3-performance-abysmal-to-good-to-great/comment-page-1/

http://bibwild.wordpress.com/2011/06/28/rails3-unbearably-slow-view-rendering-use-ree-with-gc-tuning/

Если вы используете REE 1.8.7 (который также устраняет утечку памяти, так что вам следует это сделать), то вы можете настроить параметры GC . Я только что сделал это на прошлой неделе, и наше время отклика сократилось на 50%.

...