@sadgb

Ruby on Rails render performance problem

Здравствуйте имею следующую иерархию partials рендеринг которых выливается в таблицу

render :partial => table
--render :partial => row, :collection => rows
----render :partial => cell, :collection => row.cells
------render :partial => "#{cell.partial}", :locals => {:item => cell.item}

В продакшене ренедеринг 5000 строк занимает 12 секунд
На том же самом компьютере веб интерфейс оракла рисует 5000 тех же самых строк за 2 секунды.
То есть в 6 раз быстрее.

В чем проблема? неужели настолько все плохо в рельсах, или я просто чего-то не понимаю?

Используем slim, c haml скорость такая же
  • Вопрос задан
  • 3041 просмотр
Пригласить эксперта
Ответы на вопрос 3
@AndreyMorozov
Из пушки по воробьям стреляете. Использовать партиалы для создания таблицы… Через хелперы разве не решается ваша задача?
Ответ написан
Начните с того, что уберите все content_tag. Если не поможет, то простых способов ускорить уже нет.
Ответ написан
Envek
@Envek
Если partial'ы маленькие, то имеет смысл (и в плане скорости и в плане читаемости) заменить

_table.html.slim
render :partial => row, :collection => rows
_row.html.slim
render :partial => cell, :collection => cells

на что-то вроде

_table.html.slim
rows.each_with_index do |row, row_count|
  render :partial => cell, :collection => cells

Партиалы — добро, но плодить их много не стоит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы