Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Какая версия Python самая быстрая?

12 апреля 2018 г. Archy Просмотров: 24372 RSS 3

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

Является ли Python 3 медленнее Python 2? Какая версия Python 3 – самая быстрая? Какие существуют другие варианты для повышения скорости?

Использование служебной программы производительности

Главная команда Python делает многое для производительности, стоит упомянуть сайт speed.python.org, который является отличным примером с «официальными» показателями тестов CPython.

Однако существует несколько проблем:

1. Результаты достаточно сложно прочитать;

2. Они не включают в себя PyPy;

Вместо этого, вы можете скачать панель инструментов, которая запускает этот сайт при помощи команды pip install performance, после чего вы можете запустить:

pyperformance run --python={chosen_python_runtime} -o my_results.json

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

Это отлично подходит в контексте данной статьи для официальных инсталляций Python:

  • 2.7.10,
  • 3.4.4,
  • 3.5.4,
  • 3.6.1, а также
  • 3.7 (у нас имеется бета 2).

Кроме этого, это включает PyPy(5.6.) и PyPy3 (5.4.10).

Результаты

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

Я также создал простой скрипт для получения списка файлов данных производительности и создания графиков для каждого теста. Код на GitHub.

Лучшими результатами производительности в графиках являются секундой или еще быстрее

Полные результаты с графиками доступны здесь:

https://github.com/tonybaloney/performance_testing/tree/master/png

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

Рендеринг результатов в HTML

Тест django_html использует шаблон движка рендеринга Django для создания таблицы HTML 150 х 150. Он использует классы Content и Template движка Django.

Python 3.7 на 1.19x быстрее Python 2.7, но это единственный релиз Python 3.x, который опередил Python 2.7, который я запустил.

PyPy опережает все результаты CPython, однако PyPy3 в два раза медленнее PyPy. Стоит отметить недавнее решение в Django, касаемо отказа поддержки Python 2 в Django 2.0 и выше. Это означает, что PyPy больше не поддерживается Django 2.

Время запуска

Данный тест просто оценивает время, необходимое интерпретатором для запуска. Если вы обходите ограничение GIL в Python, запустив несколько процессов, то это может быть важным.

Обратите внимание на скачок показателей PyPy, особенно PyPy3. Мы рассмотрим, почему так произошло в конце статьи.

Но суть в том, что показатель времени запуска Python 2.7 все еще самый лучший.

Криптография: crypto_paes

В данном тесте вы увидите любопытную разницу в скорости между Python 2 и 3. Почему? Crypto запрашивает большое количество расчетов, а Python 3 больше не поддерживает 32-разрядные типы чисел, только (очень) длинные числа.

Пользователи PyPy могут заметить, что PyPy3 почти в пять раз медленнее, чем PyPy!

Арифметика с плавающей точкой

«float» - это искусственное приложение арифметики с плавающей точкой, которое создаст 100 000 точечных объектов, которые вычисляют math.cos(), math.sin() и math.sqrt().

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

Регулярные выражения

В тесте регулярных выражений, «запуск 50 самых популярных сайтов в Интернете и протоколирование всех операций с регулярными выражениями. Каждой операции присваивается значение, которое рассчитывается по оценке популярности страниц, на которой она выполняется и того, сколько раз она выполняется при загрузке каждой страницы. Наконец, буквы данных кодируются при помощи ROT13 таким образом, чтобы не повлиять на то, как регулярные выражения соотносят их при вводе».

Трудно сказать, что происходит с PyPy в данном графике. Было бы любопытно, если бы кто-нибудь прислал мне такой же результат!

Обновление: команда PyPy увидела оригинал статьи и внесла правки.

Значит, Python 3 быстрее, чем Python 2?

Именно! Практически в каждом тесте. Исключения есть только в тесте crypto_paes, где Python 3 был на 1.35 медленнее (из-за типов чисел) и в тесте python_startup медленнее на 1.39.

Медленный запуск Python 3 – это главная проблема, над которой работает основная команда CPython в версиях 3.8 и 3.9.

Помимо этих двух тестов, Python 3 в 1.2–1.3 раза быстрее по своим показателям в остальных тестах. Вы можете заметить улучшения, обновившись до Python 3.7, когда он появится на полках в этом году.

Почему PyPy такой быстрый и почему им не пользуются все?

PyPy быстрее CPython благодаря своему компилятору just-in-time. Компиляторы JIT имеют огромное преимущество, так как являются крайне эффективными при выполнении предсказуемых и повторяющихся задач. Суть наших контрольных показателей включает в себя запуск одних и тех же кусков кода несколько раз подряд для точности, ускорения приложения и снижения появлений ошибок. Здесь PyPy блистает в каждом таком тесте.

Недостаток JIT компилятора и PyPy в целом – это цена запуска. Другой недостаток – это слабая совместимость с С-расширениями. Так как Python (CPython, официальный PSF Python) написан на С, многие сторонние расширения PyPi используют этот язык. Хороший пример – Numpy, так как большая его часть написана на оптимизированном коде С. При установке numpy при помощи pip, он использует ваш локальный компилятор С и строит бинарную библиотеку для вашей среды Python для выполнения.

Так как PyPy написан на Python, множество модулей не может работать с PyPy. Так что будьте бдительны и всегда проверяйте.

Кроме этого, PyPy переживает те же проблемы, что и CPython – переход версии языка 2 на версию 3. PyPy3 до недавних пор был достаточно нестабильным, что можно заметить по контрольным показателям, где присутствуют странные несоответствия с PyPy. Также были замечены проблемы с пакетами (PyTest), отбрасывающими поддержку PyPy3, хотя эту проблему пытаются уладить.

Подведем итоги

Python 3.7 – самая быстрая официальная версия Python, при этом PyPy демонстрирует самую быструю производительность (по крайней мере, в рамках наших тестов).

Хотелось бы в будущем увидеть производительность PyPy3 даже выше, чем это делает PyPy, так как версия Python 2 используется все реже и реже.

Комментариев: 3
  1. Приветствую Вас друзья! ВИДЕООБЗОРЫ ТОВАРОВ

    Широкий ассортимент велосипедных аксессуаров для для всех стилей катания и типов велосипедов сделают вашу поездку на велосипеде удобной, легкой и быстрой. Аксессуары к велосипедам Sigma Sport, SKS, CatEye, VDO, TransX, Uno, Core, Zefal и других производителей. Велосипедные фары и мигалки, велокомпьютеры, пульсометры, крылья, багажники, детские велокресла и многое другое. Ищите и выбирайте велоаксессуары в нашем каталоге, в случаи вопросов - наши консультанты всегда помогут определиться с выбором и покупкой велоаксессуаров.

    Увидимся!

  2. Добрый день уважаемые! Автомобильные товары

    Приборы ночного видения Наиболее простым является ночной монокуляр — удерживаемая в руке оператора зрительная труба обычно невысокой кратности. Существуют также приставки ночного видения к дневным оптическим прицелам. Эти приборы должны выдерживать отдачу оружия, не все прицелы могут применяться на стрелковом оружии высокой мощности. Альтернативным вариантом прицеливания через ПНВ является использование закрепленного на оружии инфракрасного лазерного целеуказателя, невидимый глазу луч которого наблюдается через очки ночного видения. Приборы ночного видения также устанавливаются и на боевую технику, где они интегрированы в прицельные комплексы.

    От всей души Вам всех благ!

  3. Здравствуйте дамы и господа! Приборы ночного видения

    Камеры скрытые мини Идеальным устройством для скрытого видеонаблюдения являются видеокамеры, вмонтированные в предметы, причем среди них могут быть как предметы повседневного использования (такие, как ручка, солнцезащитные очки или зажигалка), так и вещи, которые мы используем, отправляясь на отдых (подводная маска, фотоаппарат).Эти устройства видеонаблюдения не просто не привлекают к себе внимание посторонних людей, но и позволяют пользователю такой видеокамеры забыть о ее существовании и не заботится о том, чтобы положить камеру в удобное место и не забыть забрать при необходимости. Несмотря на свои миниатюрные размеры видеокамеры, скрытые в предметах, способны записывать достаточно качественное изображение в avi-формате, размер которого может достигать показателя 1280x960 рх. Для установки в предметы используют беспроводные радио камеры, а также скрытые DVR камеры.

    От всей души Вам всех благ!

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)