Python 2.x против 3.x Speed - PullRequest
       11

Python 2.x против 3.x Speed

35 голосов
/ 21 января 2010

Я аспирант и использую Python для написания кода, который я использую для своих исследований. Мой рабочий процесс часто состоит из небольших изменений в коде, запуска программы, проверки улучшения результатов и повторения процесса. Из-за этого я трачу больше времени на ожидание запуска моей программы, чем на самом деле работаю над ней (я знаю, что это обычный опыт). В настоящее время я использую самую последнюю версию Python 2 в своей системе, поэтому мой вопрос заключается в том, даст ли мне переход на Python 3 какое-либо повышение скорости или нет. На данный момент у меня нет особой причины переходить на Python 3, поэтому, если скорости выполнения схожи, я, вероятно, просто придерживаюсь 2.x. Я знаю, что мне придется немного изменить свой код, чтобы он работал в Python 3, поэтому нетрудно просто протестировать его в обеих версиях, чтобы увидеть, какая из них работает быстрее. Мне нужно быть достаточно уверенным, что я получу улучшение скорости, прежде чем потратить время на обновление своего кода до Python 3.

Ответы [ 5 ]

23 голосов
/ 21 января 2010

В этой статье (archive.org) говорится, что было несколько моментов, когда Python 3.0 был на самом деле медленнее, чем Python 2.6, хотя я думаю, что многие из этих проблем были решены. Тем не менее, Numpy еще не был перенесен на Python 3.0, и именно здесь скрывается большая часть высокопроизводительных (написанных на с) числовых функций. Надеюсь, он будет готов в конце 2009 или в начале 2010 года.

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

Редактировать: С тех пор были выпущены версии Numpy, которые поддерживают Python 3.

Edit2: Этот ответ (и другие ответы на этот вопрос) устарели .

5 голосов
/ 21 января 2010

В настоящее время скорость в Python 3 более или менее такая же, как в Python 2 ... Если вы ищете скорость, это не Python 3 против Python 2, а в других инструментах, таких как Psyco, Cython и т. Д. .

Но, совсем недавно появились планы по слиянию Unladen Swallow, проекта Google по реализации JIT поверх Python с Python 3. Конечно, это будет не очень скоро, но в Через некоторое время, возможно, скорость заметно увеличится на Python 3 по сравнению с Python 2. Они утверждают, что уже увеличили скорость на 10% (на Python 2). Их цель - увеличить скорость до 5х.

Для получения дополнительной информации см. PEP 3146

РЕДАКТИРОВАТЬ: Так же, как отмечает Брайан, PEP 3146 был на пенсии.

3 голосов
/ 22 января 2010

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

2 голосов
/ 21 января 2010

У меня есть анализ филогенетики, который занимает много времени, и я использую около полудюжины сценариев Python, а также другое программное обеспечение для биоинформатики (мышцы, клаусталь, взрыв, даже R!) Я использую временные файлы, чтобы сохранить промежуточные результаты, и мастер-скрипт с модулем подпроцесса, чтобы склеить все части вместе. Легко изменить мастер для запуска только тех измененных деталей, которые я хочу протестировать. Но если изменения вносятся на ранних этапах, и вы знаете только, насколько они хороши в конце всего процесса, тогда эта стратегия не сильно поможет.

2 голосов
/ 21 января 2010

Я не могу ответить на корень вашего вопроса, но если вы прочитали что-нибудь относительно вялой производительности модуля io, пожалуйста, не обращайте на это внимания. Определенно были проблемы с производительностью в Python 3.0, но они были в основном решены в Python 3.1.

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