Сравнение скорости: генерируемые сервером HTML против шаблонов? - PullRequest
4 голосов
/ 04 февраля 2011

Я использую версию шаблонов Django для Google App Engine в Python.

Есть ли существенная разница в производительности между помещением циклов в шаблон по сравнению с помещением его в обработчики страниц Python?

Например, я сравниваю что-то вроде этого:

{% for i in items %}
   <div id="item_{{i.key}}">    
       {{i.text}}
   </div>
{% endfor %}

против чего-то подобного внутри моего кода на python:

def returnHtml(items):
  item_array = []
  for i in items:
     item_array.append("<div id='item_%s'>%s</div>" % (i.id, i.text)
  return "".join(item_array)

..., который затем вставляется непосредственно в шаблон djangoв теге вроде:

{{ item_html }}

Это тривиальный пример, на самом деле, у меня есть более сложные циклы внутри циклов и т. д. Мне нравится помещать логику в код Python, потому что это гораздо прощеподдерживать.Но я беспокоюсь о влиянии на производительность.

Есть мысли?Спасибо.

Ответы [ 4 ]

5 голосов
/ 04 февраля 2011

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

Если вам не нравятся недостатки в шаблонах django, используйте что-нибудь получше. Я лично использую (и очень рекомендую) Мако , и я знаю несколько других, кому нравится Jinja2 .

2 голосов
/ 04 февраля 2011

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

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

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

1 голос
/ 16 августа 2012

Подумайте о тестах, о которых сообщалось здесь .

0 голосов
/ 04 февраля 2011

Я так не думаю.

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

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