Достаточно ли скорости Python или я должен использовать Pyrex? - PullRequest
0 голосов
/ 03 января 2012

информация: Я использую Django. вопрос: Достаточно ли скорости Python для предоставления веб-службы с низкой задержкой или я должен преобразовать свои функции в C с помощью Pyrex?

Ответы [ 4 ]

4 голосов
/ 03 января 2012

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

Для правильного ответа требуется гораздо больше информации и изучение , и оно не совсем подходит для формата SO.Для начала вам нужно знать, насколько быстро «достаточно быстро» (и даже для этого вам нужно выяснить, какая задержка может возникнуть из-за других факторов, таких как задержка в сети).Это также очевидно зависит от того, какова ваша реализация;если все, что делает ваша программа, - это выборка записей из базы данных, то выполнение кода, вероятно, будет заторможено задержкой базы данных и сети, независимо от того, используете ли вы чистый Python или C. OTOH, если вы решаете сколь угодно большие вычислительные проблемы NP-hard, Python можетначать выглядеть немного менее привлекательным.OTOOH, если вы решаете очень сложные задачи по реализации вычислительных задач, Python, вероятно, значительно сократит время, необходимое для того, чтобы вообще получить ваш сервис, а медленный сервис обычно предпочтительнее несуществующего.

Не имея конкретных знаний, наличие других веб-сервисов, написанных на Python, позволяет мне понять, что с Python у вас, вероятно, все будет в порядке, и вам нужно просто пойти и сделать это, а затем посмотреть, есть ли какие-либо узкие места в производительности, которые могли бы извлечь выгоду изБыть Пирекседом.Здесь следует рассмотреть обычную линию «преждевременная оптимизация - корень зла»;еще до того, как вы написали какой-либо код, слишком рано думать об оптимизации.Пока не очевидно, что ваш подход никогда не будет достаточно быстрым, используйте простейшую реализацию и ускорьте ее позже.

4 голосов
/ 03 января 2012

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

Лично я думаю, что у вас не будет проблем. Но опять же, это зависит от того, что именно делает ваш веб-сервис.

1 голос
/ 03 января 2012

Насколько я понимаю, вы все равно не хотите использовать Pyrex. Вы хотите использовать Cython , поскольку это более продвинутая версия того же самого.

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

Оптимизируйте, когда вы знаете, что есть проблема.

1 голос
/ 03 января 2012

Если вы думаете о переводе кода, который вы еще даже не написали, на C, вы можете написать свой веб-сервис на C с самого начала. Это даст вам минимально возможную задержку.

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