Есть очевидные накладные расходы при использовании частичного, но это не то, о чем вам, вероятно, следует беспокоиться.
Частичные файлы. Когда вы отрисовываете действие без партиалов, ваше действие «стоит» 1 файл (это не совсем так, но это для упрощения объяснения).
Если ваше действие отображает 4 части, в итоге вы получаете стоимость 5. Это означает, что у вас есть 4 дополнительных вызова ввода-вывода, и реальная стоимость каждого вызова зависит от нагрузки на сервер, производительности сервера и т. Д.
Но имеет ли это значение? По моему опыту, для 99% раз нет. Также следует отметить, что преимущества использования партиалов с точки зрения читабельности кода и удобства сопровождения обычно стоят выбора.
Если выступления должны быть ключевой особенностью, вам, вероятно, следует искать скорость и улучшения в других местах.
Помните: Ruby не является сверхбыстрым языком программирования, а выразительность кода всегда занимала первое место в пользу производительности. Rails неявно соглашается с этим соглашением, хотя команда Rails всегда фокусировалась на производительности (а Rails 3 - это практическая демонстрация, где всегда есть место для улучшений)
Тем не менее, вы можете безопасно использовать партиалы и сократить накладные расходы приложения с помощью некоторого умного механизма кэширования. Например, вы можете поместить рендеринг коллекции в блок cache
, чтобы оператор рендеринга коллекции выполнялся только один раз, тогда ваше приложение просто загрузит 1 файл кэша вместо 10 не кэшированных партиалов.
Одна из самых скрытых ошибок, которые я делал много раз вначале, заключалась в том, что мы беспокоились о производительности не так, как было сказано, без проведения тестов. Я помню, как однажды я пытался отбросить один запрос к базе данных в пользу жестко закодированного хэша, потому что «запрос стоит», не осознавая, что был другой глупый запрос, который загружал всю коллекцию таблиц без оператора include, что приводило к второй запрос выполняется в 3 раза медленнее.
Итак, если вы действительно заботитесь о производительности, вам, вероятно, не следует избегать использования партиалов, а вместо этого убедитесь, что вы используете все остальные функции, которые Rails предоставляет вам для масштабирования вашего приложения.