TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7418 3.79K
➡️ В CPython ускорили reference counting

Недавно в Python quietly появился апдейт, который уменьшает накладные расходы reference counting в горячих местах. Ключевая идея — заимствование ссылок без увеличения счётчика (`LOAD_FAST_BORROW`).

Вот минимальный пример на Python:


def advance(vx, vy, steps):
x, y = 1, 1
for _ in range(steps):
x *= vx
y *= vy
return x, y


На первый взгляд — обычный цикл. Но раньше CPython на каждой итерации увеличивал и уменьшал refcount для vx и vy.

Если посмотреть байткод:

Python 3.13


LOAD_FAST vx
LOAD_FAST x
BINARY_OP *=


Python 3.15


LOAD_FAST_BORROW vx
LOAD_FAST_BORROW x
BINARY_OP *=


Разница тонкая, но важная:
LOAD_FAST → увеличивает reference count
LOAD_FAST_BORROW → берёт ссылку временно, без инкремента

Это возможно только если интерпретатор доказывает, что объект:
✔️ используется локально
✔️ не переопределяется
✔️ не «утекает» наружу

По сути, CPython делает упрощённый lifetime-анализ — очень похоже на borrow-идею из Rust, только на уровне байткода.

Итог: меньше операций с памятью, меньше давления на CPU cache и ускорение циклов без изменения Python-кода.

🔗 Если хочется увидеть полный байткод-дифф и внутреннюю логику оптимизации — дальше всё подробно разобрано в статье.

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека питониста

#буст
  • 👍 16
  • 🔥 4
  • ❤ 2
  • 🤔 1
More from @pyproglib
  1. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  2. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  3. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  4. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  5. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  6. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →