Производительность между Django и необработанным Python - PullRequest
4 голосов
/ 06 марта 2011

Мне было интересно, какова разница в производительности между использованием простых файлов Python для создания веб-страниц и использованием Django. Мне просто интересно, есть ли существенная разница между ними. Спасибо

Ответы [ 4 ]

10 голосов
/ 06 марта 2011

Django - это простой Python.Таким образом, время выполнения каждого подобного оператора или выражения будет одинаковым.Что нужно понимать, так это то, что многие многие компоненты объединяются, чтобы предложить несколько преимуществ при разработке для Интернета:

  • Удаление общих задач в библиотеки (аутентификация, доступ к данным, создание шаблонов, маршрутизация)
  • Корректность алгоритмов (куки / сеансы, криптография)
  • Уменьшение пользовательского кода (из-за библиотек), который напрямую влияет на количество ошибок, время разработки и т. Д.
  • Следование соглашениям приводит к улучшению командыработа и умение понимать код
  • Plug-Способность;Создание или поиск новых функциональных блоков, которые можно использовать с минимальными затратами на интеграцию
  • Документация и помощь;многие люди понимают эту технологию и могут помочь (StackOverflow?)

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

Если вы когда-либо использовали пользовательский код сеанса и код доступа к данным в PHPдо появления веб-фреймворков вы даже не будете думать о затратах на производительность, связанных с фреймворком, который делает вашу работу интересной и легкой (y) более сложной.

Теперь, как говорится, Django поставляется с МНОГОкомпоненты.Он разработан таким образом, что большую часть времени они не будут влиять на вас.Тем не менее, для каждого запроса выполняется удивительное количество кода.Если вы создаете сайт с помощью Django, а производительность просто не снижается, вы можете смело удалять все ненужные фрагменты.Или вы можете использовать «тонкий» фреймворк Python.

На самом деле, просто используйте Django.Это довольно круто.Он работает на многих сайтах в миллионы раз больше, чем все, что вы (или я) создадите.Существуют способы значительного повышения производительности, такие как использование кэширования, а не оптимизация цикла по сравнению с пользовательским промежуточным ПО.

4 голосов
/ 06 марта 2011

Зависит от того, как ваш "простой Python" создает веб-страницы. Например, если он использует шаблонизатор, производительность этого движка будет иметь огромное значение. Если он использует базу данных, то какой тип слоя доступа к данным вы используете (в контексте требований для этого уровня) будет иметь значение.

Таким образом, вопрос становится вопросом о том, имеют ли ваши произвольные (и в настоящее время неустановленные) выборки инструментальных цепочек лучшую производительность во время выполнения, чем выбранные Django. Если производительность является вашей основной, главной целью, вы, безусловно, должны быть в состоянии сделать более оптимальный выбор. Тем не менее, с точки зрения общей стоимости - т.е. покупка большего количества веб-серверов для варианта с более медленным временем выполнения, по сравнению с покупкой большего количества часов программиста для варианта «больше работы для разработки» - у вопроса просто слишком много открытых элементов, чтобы отвечать.

2 голосов
/ 06 марта 2011

Преждевременная оптимизация - корень всего зла.

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

Даже если ваша «сырая» реализация быстрее, я не думаю, что она будет достаточно быстрой, чтобы серьезно повлиять на ваше веб-приложение. Создайте его, используя инструменты, которые работают на правильном уровне абстракции, и если производительность является проблемой, измерьте ее и выясните, где находятся узкие места, и примените оптимизацию. Если после всего этого вы обнаружите, что абстракции, которые создает Django, замедляют работу вашего приложения (а я не ожидаю, что это произойдет), вы можете рассмотреть возможность перехода на другую платформу или написание чего-либо вручную. Вы, вероятно, обнаружите, что вы можете получить повышение производительности за счет кэширования, балансировки нагрузки между несколькими серверами и выполнения «обычных трюков», а не путем переопределения самой веб-инфраструктуры.

1 голос
/ 06 марта 2011

Django также обычный Python .

Просмотр производительности в основном зависит от эффективности вашего кода.

Большинство проблем производительности программного обеспечения возникают из-за неэффективного кода, а не из-за выбора инструментов и языка. Так что реализация имеет значение. AFAIK Django делает это превосходно, и его производительность выше отметки.

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