Хотите ускорить свой код Python без профилировщика?
Вот как я повысил производительность кода на 25%, используя пять изменений кода, тщательное тестирование и одно обновление платформы, которое не потребовало никаких усилий, но изначально цель была провалена.
Большинство разработчиков сразу же обращаются к профилировщикам, но есть более быстрый подход: научиться выявлять закономерности, которые всегда требуют времени. Сегодня я разберу пять узких мест, которые я выявил, просто читая код Python: списковые генераторы, вызываемые в циклах, вычисляемые свойства повсюду, создание ненужных объектов и функции, которые выполняют ненужную работу. Мы подтверждаем каждое изменение данными о времени выполнения, и я откатываю ту оптимизацию, которая не побила предыдущий лучший результат.
Сюрприз? Python 3.13 обеспечил дополнительный прирост производительности на 8% без каких-либо изменений кода. Если объединить оптимизацию кода (на 17% быстрее) с обновлением платформы (на 8% быстрее), мы не просто достигли цели в 16%, а превзошли её, обеспечив общее улучшение на 25%. И разрыв между Python и C++ продолжает сокращаться.
🔧 ЧТО ВЫ ИЗУЧИТЕ:
Распознавание образов для выявления проблем с производительностью (профилировщик не нужен)
Как точно измерять изменения в коде (методология измерения времени)
Когда использовать списки, а когда — включения (контекст важен)
Замена вычислений на подстановки (целочисленные объекты Python требуют больших затрат)
Дисциплина отката изменений, которые себя не оправдали
Почему Python 3.13 — первый релиз, ориентированный на производительность, за многие годы
📊 РЕЗУЛЬТАТЫ ПРОИЗВОДИТЕЛЬНОСТИ:
Базовый показатель: 44,435 секунды
После изменений кода: 37,004 секунды (на 17% быстрее)
После Python 3.13: 30,8 секунды (всего на 25% быстрее)
Сравнение с C++: сокращение разрыва с 11-кратного до 8-кратного ускорения
💡 КЛЮЧЕВОЙ ВЫВОД:
Оптимизация производительности — это не дорогие инструменты или сложное профилирование. Речь идёт о распознавании закономерностей: часто выполняемого кода, ресурсоёмких операций в циклах, пересчитываемых свойств и всего, что можно полностью исключить. Подтверждайте каждое изменение данными. Откатывайте то, что не работает. Затем посмотрите за пределы своего кода — улучшения платформы тоже важны.
Если эти закономерности важны в Python (предположительно, медленном), они будут важны везде.
🔗 СВЯЗАННЫЕ МАТЕРИАЛЫ:
Python против C++: • Just how Slow is Python?
Код: https://github.com/the-code-guy-yt/Ti...
---
Разработано с использованием: Python 3.12 → 3.13, ИИ для игры в крестики-нолики (минимакс), строгая методология хронометража
#python #производительность #оптимизация #программирование #кодирование #программная инженерия #руководство по python #интервью по кодированию #программирование по python #разработка ПО
Стоковые видео и звуковые эффекты: - (Реферальная ссылка)
ArtlistIO: https://artlist.io/Guy-1799812
Информация по комментариям в разработке