Использование Cython с Django.Имеет ли это смысл? - PullRequest
33 голосов
/ 22 августа 2010

Можно ли оптимизировать скорость критически важного приложения, разработанного в Django с помощью Cython?

Недавно я читал в Интернете, что Cython может преобразовывать код Python в C, как скорость.Возможно ли это с Джанго?

Ответы [ 6 ]

30 голосов
/ 22 августа 2010

Можно ли оптимизировать скорость критически важного приложения, разработанного в Django с Cython

Сомнительно.

Большую часть времени ответа веб-приложения составляют элементы, отличные от HTML, которые необходимо загружать отдельно.Обычное практическое правило - 8 статических файлов на страницу HTML.(.CSS, .JS, изображения и т. Д.)

Поскольку статический контент не поступает из Django, большая часть временной шкалы вашего веб-приложения - это Apache (или Nginx или какое-либо другое серверное программное обеспечение вне Django).

Рассматривая только время для создания HTML, вы обнаружите, что большую часть времени тратится на ожидание базы данных (даже если это SQLite в памяти, вы увидите, что база данных имеет тенденцию кдоминировать над временной шкалой)

Когда вы сделаете так, чтобы Apache и база данных работали быстро, тогда - и только тогда - вы можете рассмотреть элементы Python.

Итог.Не тратьте свое время на то, чтобы заставить Django и Python работать быстрее.

24 голосов
/ 22 августа 2010

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

11 голосов
/ 14 июня 2011

Концептуально то, что вы ищете, возможно, но вы смотрите не в ту сторону.

Вы действительно должны быть заинтересованы в PyPy, чрезвычайно перспективной технологии для сообщества Django (и Python).Тесты Django на PyPy уже показывают увеличение скорости 12.5X по сравнению с обычным Python.Теперь, даже несмотря на то, что статические ресурсы внешнего интерфейса могут способствовать большей скорости отклика страниц конечному пользователю (согласно ответу С.Лотта выше), это не учитывает тот факт, что увеличение скорости на стороне сервера чрезвычайно важно.По этой причине Facebook пришлось изобретать HipHop PHP ... отставание PHP просто не могло его сократить.Ближе к дому, просто учтите, что Meebo (сайт, управляемый Python) тратит десятки тысяч долларов в месяц на серверную инфраструктуру.Теперь вы можете попробовать сэкономить на стоимости сервера с PyPy?Секси!

Проверьте критерии: http://speed.pypy.org/

5 голосов
/ 22 августа 2010

Повторяя другие ответы, это вряд ли принесет вам какую-то конкретную выгоду, если, конечно, вы не представили конкретный случай, в котором можно получить какую-то выгоду.

Добавляя к ответам, я хочу указать список веб-оптимизаций от веб-команды Yahoo.Это измеренные и доказанные преимущества в областях, применимых ко многим веб-сайтам, которые стоит изучить:

Команда «Исключительная производительность» определила ряд лучших практик для быстрого создания веб-страниц.Список включает 35 лучших практик, разделенных на 7 категорий.

4 голосов
/ 10 мая 2017

Мы создали приложение, которое устанавливается на сайте клиента и называется InProd , оно управляет конфигурацией контакт-центров с питанием Genesys.Это приложение Django, скомпилированное с Cython.

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

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

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

1 голос
/ 20 сентября 2018

Это зависит, если у вас есть тяжелые процессы на стороне сервера. В моем случае это могло бы улучшить один из процессов и ускорить его ~ в 5 раз. У меня была функция, которая переделывает большие XML-файлы, которые вводит пользователь, и сохраняет результаты в базу данных. сообщая Cython, что в некоторых местах вход или выход является строкой, магия ускорения в 5 раз увеличилась.

...