Производительность: Python 3.x против Python 2.x

Что касается производительности, то как Python 3 сравнивается с Python 2.x?

Спустя два года после того, как этот вопрос был задан, мне интересно, остается ли ответ прежним.

ripper234 19.03.2011 15:46

Спустя семь лет после того, как этот вопрос был задан, ответ все тот же.

Warren P 11.11.2015 21:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
24
2
10 054
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я бы сказал, что разница будет ниже тривиальной. Например, цикл по списку будет таким же.

Идея Python 3 состоит в том, чтобы очистить сам синтаксис языка - удалить неоднозначные вещи, такие как except Exception1, Exception2, очистить стандартные модули (без urllib, urllib2, httplib и т. д.).

На самом деле вы мало что можете сделать, чтобы улучшить его производительность, хотя я предполагаю, что такие вещи, как код сборки мусора и управления памятью, будут иметь некоторые настройки, но это не будет "вау, мой код генерации статистики базы данных завершается наполовину время!" улучшение - это то, что вы получаете, улучшая код, а не язык!

На самом деле производительность языка не имеет значения - все интерпретируемые языки в основном работают с одинаковой скоростью. Я считаю, что Python «быстрее» - это все встроенные moudles и удобный для написания синтаксис - то, что имеет было улучшено в Python3, поэтому я думаю, что в этих терминах, да, производительность python3 лучше, чем python2.x. .

«все интерпретируемые языки в основном функционируют с одинаковой скоростью» - это не совсем так. Интерпретированные пути кода могут быть скомпилированы в собственный код, см. Недавних конкурентов Javascript VM.

James Baker 04.10.2008 22:38

это ничего не значит о языке, но о компиляторах, написанных для него. У вас мог есть компилятор python, и он будет примерно таким же быстрым, как javascript.

gbjbaanb 04.10.2008 23:12

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

Ответ принят как подходящий

3.0 медленнее, чем 2.5 по официальным тестам. От "Что нового в Python 3.0":

The net result of the 3.0 generalizations is that Python 3.0 runs the pystone benchmark around 10% slower than Python 2.5. Most likely the biggest cause is the removal of special-casing for small integers. There’s room for improvement, but it will happen after 3.0 is released!

Это по-прежнему в целом верно в 2015 году, если в рассматриваемом коде много строковых операций, Python 2.7 обычно быстрее, чем Python 3.5, по состоянию на ноябрь 2015 года.

Warren P 11.11.2015 21:08

Если нет каких-либо планов относительно новой виртуальной машины (и я не слышал о таких планах), есть все основания полагать, что в долгосрочной перспективе производительность Py3K будет, по крайней мере, асимптотически, равной производительности 2,5.

Это может занять несколько месяцев, но в конечном итоге произойдет, поскольку ничто в новых функциях Py3k по своей сути не является менее производительным.

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

(Обновление 30.03.2010): этот ответ сегодня не очень актуален, поскольку unladen-swallow будет объединен с Python 3 и обеспечит заметное ускорение. Если честно, это является новая ВМ :-)

Eli Bendersky 30.03.2010 11:24

Я думаю, что в конечном итоге еще слишком рано проводить такое сравнение. Подождите, пока он выйдет из бета-версии, прежде чем проводить тестирование. Интерпретатор, вероятно, будет значительно доработан перед выпуском, но в целом я думаю, что для большинства применений производительность будет сопоставимой, и если вы используете действительно ориентированное на скорость приложение, действительно ли питон является правильным языком для использования?

Библиотека ввода-вывода была полностью переработана, и новая реализация написана на чистом Python. Хотя это функциональное улучшение, в настоящее время оно происходит намного медленнее. Идет работа по переписыванию основной части новой системы на C. Подробности см. В этиошибкаотчеты.

Другие вопросы по теме