Подтвердить что ты не робот

Python 2.x против 3.x Скорость

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

4b9b3361

Ответ 1

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

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

Изменить: с тех пор выпущены версии Numpy, которые поддерживают Python 3.

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

Ответ 2

Прямо сейчас, скорость на 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

EDIT: Как отмечает Брайан, PEP 3146 был уволен.

Ответ 3

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

Ответ 4

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

Ответ 5

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