Гвіда ван Рассум мае намер дасягнуць двухразовага павелічэння прадукцыйнасці ў CPython 3.11

Гвіда ван Рассум, стваральнік мовы праграмавання Python, у сваім дакладзе на канферэнцыі Python Language Summit распавёў аб планах па аптымізацыі прадукцыйнасці CPython. Да версіі 3.11, якая чакаецца ў 2022 годзе, распрацоўшчыкі спадзяюцца дабіцца павелічэння прадукцыйнасці ў два разы. Праектам па аптымізацыі CPython займаецца невялікая каманда распрацоўшчыкаў з кампаніі Microsoft, у якую нядаўна перайшоў на працу Гвіда.

Пры рэалізацыі праекта распрацоўшчыкі маюць намер прытрымлівацца шэрагу абмежаванняў, такіх як захаванне поўнай сумяшчальнасці на ўзроўні ABI і кода, а таксама недапушчальнасць павышэння прадукцыйнасці за кошт запаволення ў памежных выпадках. З складовых частак, якія можна будзе змяніць для павышэння прадукцыйнасці адзначаюцца байткод, размяшчэнне дадзеных у памяці, кампілятар і інтэрпрэтатар.

Напрацоўкі праекту публікуюцца ў асобным рэпазітары faster-cpython. Адзін з удзельнікаў праекта, які раней займаўся распрацоўкай JIT-кампілятра HotPy для CPython, апублікаваў план, у адпаведнасці з якім лічыць рэалістычным падняць прадукцыйнасць у пяць разоў і дамагчыся гэтага выніку ў выпуску Python 3.13. Праект падзелены на чатыры стадыі:

  • У Python 3.10 плануецца рэалізаваць аптымізацыі ў інтэрпрэтатары, звязаныя з адаптацыяй працэсу інтэрпрэтацыі да тыпаў і значэнняў у працэсе выканання.
  • У выпуску Python 3.11 чакаецца ўнясенне паляпшэнняў у runtime і ключавыя аб'екты, а таксама ўключэнне мноства дробных спецыялізаваных аптымізацый, такіх як паскарэнне бінарных аператараў і працы з цэлымі значэннямі, якія змяшчаюцца ў адно машыннае слова, паскарэнне выкліку і вяртання з функцый, зніжэнне накладных з памяццю і пры апрацоўцы выключэнняў.
  • У Python 3.12 з'явіцца просты JIT-кампілятар, які ўжываецца для невялікай часткі спецыялізаванага кода.
  • У Python 3.13 будуць дададзены новыя магчымасці генерацыі машыннага кода падчас выканання і пашырана ўжыванне JIT-кампілятара.

Крыніца: opennet.ru

Дадаць каментар