TG Telegram Group & Channel
Питонические атаки | United States America (US)
Create: Update:

Ещё про изменения, которые хотят попасть в 3.12.

Недавно опубликовали PEP 709 – Inlined comprehensions про оптимизацию list, dict & set comprehension'ов. Кстати, как вы называете это по-русски? Списковые включения, словарные включения? Странно звучит. Буду писать "компрехеншн", как обычно говорю.

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

Идея оптимизации состоит в том, чтобы избежать создания этой одноразовой функции, а изоляции внутренних переменных компрехеншена достигать другими способами. Грубо говоря, обычным удалением этих переменных по завершению работы. И так получается быстрее — микробенчмарки компрехеншенов показывают ускорение работы аж в 2 раза, а в среднем от кода с компрехеншенами можно ожидать ускорение на уровне 11%. Это создание и вызов одноразовой функции с вытекающими операциями над стэком вызовов оказались довольно дорогими.

Такая оптимизация поменяет некоторые детали, на которые, скорее всего, мало кто сильно рассчитывает. Например, стектрейсы от ошибок, возникших в теле компрехеншена, станут на 1 этаж короче из-за отсутствия этой служебной функции.

Оптимизация затронет только компрехеншены, вложенные в функции. Глобальные компрехеншены пока решили не трогать — там особый случай. Генераторные выражения (generator expressions) тоже пока не оптимизируются. Короче, работают по принципу "low effort, high reward".

Автор пропозала работает в Instagram. Видимо, они постепенно выносят удачные идеи из своего performance-oriented форка интерпретатора Cinder в апстрим.

PEP на данный момент находится в статусе черновика. Думаю, что будет принят.

Ещё про изменения, которые хотят попасть в 3.12.

Недавно опубликовали PEP 709 – Inlined comprehensions про оптимизацию list, dict & set comprehension'ов. Кстати, как вы называете это по-русски? Списковые включения, словарные включения? Странно звучит. Буду писать "компрехеншн", как обычно говорю.

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

Идея оптимизации состоит в том, чтобы избежать создания этой одноразовой функции, а изоляции внутренних переменных компрехеншена достигать другими способами. Грубо говоря, обычным удалением этих переменных по завершению работы. И так получается быстрее — микробенчмарки компрехеншенов показывают ускорение работы аж в 2 раза, а в среднем от кода с компрехеншенами можно ожидать ускорение на уровне 11%. Это создание и вызов одноразовой функции с вытекающими операциями над стэком вызовов оказались довольно дорогими.

Такая оптимизация поменяет некоторые детали, на которые, скорее всего, мало кто сильно рассчитывает. Например, стектрейсы от ошибок, возникших в теле компрехеншена, станут на 1 этаж короче из-за отсутствия этой служебной функции.

Оптимизация затронет только компрехеншены, вложенные в функции. Глобальные компрехеншены пока решили не трогать — там особый случай. Генераторные выражения (generator expressions) тоже пока не оптимизируются. Короче, работают по принципу "low effort, high reward".

Автор пропозала работает в Instagram. Видимо, они постепенно выносят удачные идеи из своего performance-oriented форка интерпретатора Cinder в апстрим.

PEP на данный момент находится в статусе черновика. Думаю, что будет принят.
🆒21👍13🔥2🦄2🤔1


>>Click here to continue<<

Питонические атаки




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)