Использование Cython с Django. Имеет ли это смысл?

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

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

Ответы

Ответ 1

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

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

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

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

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

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

Нижняя линия. Не тратьте время на то, чтобы сделать Django и Python быстрее.

Ответ 2

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

Ответ 3

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

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

Ознакомьтесь с эталонами: http://speed.pypy.org/

Ответ 4

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

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

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

Ответ 5

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

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

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

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