Найти в Дзене

Библиотека packaging ускорена в 2–5 раз

Библиотека packaging, на которой основаны pip и большинство инструментов Python-экосистемы, стала работать в 2–5 раз быстрее. Оптимизация выполнена без перехода на C и без использования нестандартных решений — только профилирование и инженерные улучшения на чистом Python. В ходе работы совместно с мейнтейнерами pip были оптимизированы: • парсинг версий (PEP 440) • SpecifierSet • маркеры • Requirement • canonicalize_name Основные узкие места оказались не только в regex, но и в использовании namedtuple, повторном создании version, singledispatch вместо if, генераторов вместо map и избыточном применении regex. Оптимизация проводилась с помощью нового статистического профайлера Python 3.15 и бенчмарков на всех версиях пакетов, загруженных на PyPI. Результаты: • создание version — до 2 раз быстрее...

Библиотека packaging ускорена в 2–5 раз

Библиотека packaging, на которой основаны pip и большинство инструментов Python-экосистемы, стала работать в 2–5 раз быстрее. Оптимизация выполнена без перехода на C и без использования нестандартных решений — только профилирование и инженерные улучшения на чистом Python.

В ходе работы совместно с мейнтейнерами pip были оптимизированы:

• парсинг версий (PEP 440)

• SpecifierSet

• маркеры

• Requirement

• canonicalize_name

Основные узкие места оказались не только в regex, но и в использовании namedtuple, повторном создании version, singledispatch вместо if, генераторов вместо map и избыточном применении regex.

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

Результаты:

• создание version — до 2 раз быстрее...