PyPy – более быстрый питон


PyPy 2.4, он же Snow White, был выпущен со значительными улучшениями производительности и исправлениями ошибок.

PyPy уже имеет репутацию способа повысить производительность программ на Python, выполняя код в среднем в шесть раз быстрее, чем «стандартный» интерпретатор Python. Одной из основных причин такого повышения производительности является использование PyPy компилятора JIT (как раз вовремя). Согласно сравнительным тестам производительности в центре скорости PyPy, среднее улучшение по сравнению с CPython для новой версии в 6,6 раза быстрее, хотя они указывают, что фактическое улучшение в значительной степени зависит от типа выполняемой задачи.

Улучшение производительности происходит благодаря внутренним улучшениям в обработке строк и bytearray, а также существенному переписыванию обработки GIL, согласно документации к выпуску, в которой говорится, что внешние вызовы теперь намного быстрее, особенно CFFI. Это также означает лучшую производительность во многих угловых случаях с обработкой строк или bytearrays.

Новая версия PyPy была разработана под кодовым названием Snow White, и наряду с улучшением производительности имеет ряд исправлений ошибок. Он также поддерживает стандартную библиотеку Python 2.7.8.

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

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

Производительность локальных переменных потока как в неустановленном, так и в jitted-коде была повышена. Это в основном влияет на обработку errno в Linux, что делает внешние вызовы быстрее. Еще одним улучшением является переход к смешанной модели опроса и мьютекса GIL, которые делают код mutlithreaded, скомпилированный с использованием JIT, намного быстрее. GIL сериализует доступ нескольких потоков к интерпретатору Python и является основной причиной низкой производительности Python.

Для энтузиастов Python одним из недостатков PyPy является тот факт, что он не поддерживает Python 3, хотя разработчики работают над тем, чтобы сделать это возможным, и проводят кампанию по сбору средств на своем веб-сайте.


Добавить комментарий