Pyton-lite, JIT compiler เบชเปเบฒเบฅเบฑเบšเบซเบผเบฑเบเบŠเบฑเบš Python เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต

ะ ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะธ ะฟั€ะพะตะบั‚ะฐ Pyston, ะฟั€ะตะดะปะฐะณะฐัŽั‰ะตะณะพ ะฒั‹ัะพะบะพะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝัƒัŽ ั€ะตะฐะปะธะทะฐั†ะธัŽ ัะทั‹ะบะฐ Python, ะธัะฟะพะปัŒะทัƒัŽั‰ัƒัŽ ัะพะฒั€ะตะผะตะฝะฝั‹ะต ั‚ะตั…ะฝะพะปะพะณะธะธ JIT-ะบะพะผะฟะธะปัั†ะธะธ, ะฟั€ะตะดัั‚ะฐะฒะธะปะธ ั€ะฐััˆะธั€ะตะฝะธะต Pyston-lite ั ั€ะตะฐะปะธะทะฐั†ะธะตะน JIT-ะบะพะผะฟะธะปัั‚ะพั€ะฐ ะดะปั CPython. ะ•ัะปะธ Pyston ัะฒะปัะตั‚ัั ะพั‚ะฒะตั‚ะฒะปะตะฝะธะตะผ ะพั‚ ะบะพะดะพะฒะพะน ะฑะฐะทั‹ CPython ะธ ั€ะฐะทะฒะธะฒะฐะตั‚ัั ะพะฑะพัะพะฑะปะตะฝะฝะพ, ั‚ะพ Pyston-lite ะพั„ะพั€ะผะปะตะฝ ะฒ ะฒะธะดะต ัƒะฝะธะฒะตั€ัะฐะปัŒะฝะพะณะพ ั€ะฐััˆะธั€ะตะฝะธั, ะฟั€ะตะดะฝะฐะทะฝะฐั‡ะตะฝะฝะพะณะพ ะดะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ัˆั‚ะฐั‚ะฝะพะผัƒ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ัƒ Python (CPython).

Pyston-lite ะฟะพะทะฒะพะปัะตั‚ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฑะฐะทะพะฒั‹ะต ั‚ะตั…ะฝะพะปะพะณะธะธ Pyston ะฑะตะท ะทะฐะผะตะฝั‹ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ะฐ, ั‡ะตั€ะตะท ัƒัั‚ะฐะฝะพะฒะบัƒ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพะณะพ ั€ะฐััˆะธั€ะตะฝะธั ะฟั€ะธ ะฟะพะผะพั‰ะธ ะฟะฐะบะตั‚ะฝะพะณะพ ะผะตะฝะตะดะถะตั€ะฐ PIP ะธะปะธ Conda. Pyston-lite ัƒะถะต ั€ะฐะทะผะตั‰ั‘ะฝ ะฒ ั€ะตะฟะพะทะธั‚ะพั€ะธัั… PyPI ะธ Conda ะธ ะดะปั ัƒัั‚ะฐะฝะพะฒะบะธ ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฒั‹ะฟะพะปะฝะธั‚ัŒ ะบะพะผะฐะฝะดัƒ ยซpip install pyston_lite_autoloadยป ะธะปะธ ยซconda install pyston_lite_autoload -c pystonยป. ะŸั€ะตะดะปะพะถะตะฝะพ ะดะฒะฐ ะฟะฐะบะตั‚ะฐ: pyston_lite (ะฝะตะฟะพัั€ะตะดัั‚ะฒะตะฝะฝะพ JIT) ะธ pyston_lite_autoload (ะฒั‹ะฟะพะปะฝัะตั‚ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบัƒัŽ ะฟะพะดัั‚ะฐะฝะพะฒะบัƒ JIT ะฟั€ะธ ะทะฐะฟัƒัะบะต ะฟั€ะพั†ะตััะฐ Python). ะ’ะพะทะผะพะถะฝะพ ะธ ะฟั€ะพะณั€ะฐะผะผะฝะพะต ัƒะฟั€ะฐะฒะปะตะฝะธะต ะฒะบะปัŽั‡ะตะฝะธะตะผ JIT ะธะท ะฟั€ะธะปะพะถะตะฝะธั ะฑะตะท ัƒัั‚ะฐะฝะพะฒะบะธ ะผะพะดัƒะปั autoload, ะธัะฟะพะปัŒะทัƒั ั„ัƒะฝะบั†ะธัŽ pyston_lite.enable().

ะะตัะผะพั‚ั€ั ะฝะฐ ั‚ะพ, ั‡ั‚ะพ Pyston-lite ะฝะต ะพั…ะฒะฐั‚ั‹ะฒะฐะตั‚ ะฒัะต ะดะพัั‚ัƒะฟะฝั‹ะต ะฒ Pyston ะพะฟั‚ะธะผะธะทะฐั†ะธะธ, ะตะณะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะฟะพะทะฒะพะปัะตั‚ ะฟะพะฒั‹ัะธั‚ัŒ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ะฟั€ะธะผะตั€ะฝะพ 10-25% ะฟะพ ัั€ะฐะฒะฝะตะฝะธัŽ ั ะพะฑั‹ั‡ะฝั‹ะผ Python 3.8. ะ’ ะดะฐะปัŒะฝะตะนัˆะตะผ ะฟะปะฐะฝะธั€ัƒะตั‚ัั ะฟะตั€ะตะฝะพั ะฒ Pyston-lite ะฑะพะปัŒัˆะธะฝัั‚ะฒะฐ ะพะฟั‚ะธะผะธะทะฐั†ะธะน, ะฟั€ะธััƒั‚ัั‚ะฒัƒัŽั‰ะธั… ะฒ Pyston, ะฐ ั‚ะฐะบะถะต ั€ะฐััˆะธั€ะตะฝะธะต ะฟะพะดะดะตั€ะถะธะฒะฐะตะผั‹ั… ะฒะตั€ัะธะน CPython (ะฟะตั€ะฒั‹ะน ะฒั‹ะฟัƒัะบ ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ั‚ะพะปัŒะบะพ Python 3.8). ะ˜ะท ะฑะพะปะตะต ะณะปะพะฑะฐะปัŒะฝั‹ั… ะฟะปะฐะฝะพะฒ ะพั‚ะผะตั‡ะฐะตั‚ัั ัะพะฒะผะตัั‚ะฝะฐั ั€ะฐะฑะพั‚ะฐ ั ะบะพะผะฐะฝะดะพะน CPython ะฟะพ ั€ะตะฐะปะธะทะฐั†ะธะธ ะฝะพะฒั‹ั… API ะดะปั JIT, ะฟะพะทะฒะพะปััŽั‰ะธั… ะฑะพะปะตะต ะฟะพะปะฝะพ ะบะพะฝั‚ั€ะพะปะธั€ะพะฒะฐั‚ัŒ ั€ะฐะฑะพั‚ัƒ Python. ะžะฑััƒะถะดะฐะตั‚ัั ะฒะบะปัŽั‡ะตะฝะธะต ะฟั€ะตะดะปะพะถะตะฝะฝั‹ั… ะธะทะผะตะฝะตะฝะธะน ะฒ ะฒะตั‚ะบัƒ Python 3.12. ะ’ ะธะดะตะฐะปะต ั€ะฐััะผะฐั‚ั€ะธะฒะฐะตั‚ัั ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะตั€ะตะฝะพัะฐ ะฒัะตะน ั„ัƒะฝะบั†ะธะพะฝะฐะปัŒะฝะพัั‚ะธ ะธะท Pyston ะฒ ั€ะฐััˆะธั€ะตะฝะธะต, ั‡ั‚ะพ ะฟะพะทะฒะพะปะธั‚ ัƒะนั‚ะธ ะพั‚ ะฟะพะดะดะตั€ะถะฐะฝะธั ัะพะฑัั‚ะฒะตะฝะฝะพะณะพ ั„ะพั€ะบะฐ CPython.

ะšั€ะพะผะต Pyston-lite ะฟั€ะพะตะบั‚ะพะผ ั‚ะฐะบะถะต ะฒั‹ะฟัƒั‰ะตะฝะพ ะพะฑะฝะพะฒะปะตะฝะธะต ะฟะพะปะฝะพั†ะตะฝะฝะพะณะพ ะฟะฐะบะตั‚ะฐ Pyston 2.3.4, ะฒ ะบะพั‚ะพั€ะพะผ ะฟั€ะตะดะปะพะถะตะฝั‹ ะฝะพะฒั‹ะต ะพะฟั‚ะธะผะธะทะฐั†ะธะธ. ะ’ ั‚ะตัั‚ะต pyperformance ะฒะตั€ัะธั 2.3.4 ะฑั‹ัั‚ั€ะตะต ะฒั‹ะฟัƒัะบะฐ 2.3.3 ะฟั€ะธะผะตั€ะฝะพ ะฝะฐ 6%. ะžะฑั‰ะธะน ะฒั‹ะธะณั€ั‹ัˆ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ะธ ะฟะพ ัั€ะฐะฒะฝะตะฝะธัŽ ั CPython ะพั†ะตะฝะธะฒะฐะตั‚ัั ะฒ 66%.

ะ”ะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพ ะผะพะถะฝะพ ะพั‚ะผะตั‚ะธั‚ัŒ ั€ะฐะทะฒะธะฒะฐะตะผั‹ะต ะฒ ั€ะฐะผะบะฐั… ั†ะธะบะปะฐ ั€ะฐะทั€ะฐะฑะพั‚ะบะธ CPython 3.11 ะพะฟั‚ะธะผะธะทะฐั†ะธะธ ะฒ ะพัะฝะพะฒะฝะพะผ ะฟั€ะพะตะบั‚ะต, ะบะพั‚ะพั€ั‹ะต ะฒ ะฝะตะบะพั‚ะพั€ั‹ั… ั‚ะตัั‚ะฐั… ะฟะพะทะฒะพะปะธะปะธ ะฟะพะดะฝัั‚ัŒ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ะฝะฐ 25%. ะะฐะฟั€ะธะผะตั€, ะฒ CPython 3.11 ะฟะพะฒั‹ัˆะตะฝะฐ ัั„ั„ะตะบั‚ะธะฒะฝะพัั‚ัŒ ะบััˆะธั€ะพะฒะฐะฝะธั ัะพัั‚ะพัะฝะธั ะฑะฐะนั‚ะบะพะดะฐ ะฑะฐะทะพะฒั‹ั… ะผะพะดัƒะปะตะน, ั‡ั‚ะพ ะฝะฐ 10-15% ัƒัะบะพั€ะธั‚ ะทะฐะฟัƒัะบ ัะบั€ะธะฟั‚ะพะฒ. ะ—ะฝะฐั‡ะธั‚ะตะปัŒะฝะพ ัƒัะบะพั€ะตะฝ ะฒั‹ะทะพะฒ ั„ัƒะฝะบั†ะธะน ะธ ะดะพะฑะฐะฒะปะตะฝั‹ ัะฟะตั†ะธะฐะปะธะทะธั€ะพะฒะฐะฝะฝั‹ะต ะฑั‹ัั‚ั€ั‹ะต ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ั‹ ั‚ะธะฟะพะฒั‹ั… ะพะฟะตั€ะฐั†ะธะน. ะขะฐะบะถะต ะฒะตะดั‘ั‚ัั ั€ะฐะฑะพั‚ะฐ ะฟะพ ะฟะตั€ะตะฝะพััƒ ะฝะตะบะพั‚ะพั€ั‹ั… ะพะฟั‚ะธะผะธะทะฐั†ะธะธ, ะฟะพะดะณะพั‚ะพะฒะปะตะฝะฝั‹ั… ะฟั€ะพะตะบั‚ะฐะผะธ Cinder ะธ HotPy.

ะ”ะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพ ะฒ ั€ะฐะผะบะฐั… ะฟั€ะพะตะบั‚ะฐ nogil ะฒะตะดั‘ั‚ัั ั€ะฐะฑะพั‚ะฐ ะฝะฐะด ัะบัะฟะตั€ะธะผะตะฝั‚ะฐะปัŒะฝั‹ะผ ั€ะตะถะธะผะพะผ ัะฑะพั€ะบะธ CPython ะฑะตะท ะณะปะพะฑะฐะปัŒะฝะพะน ะฑะปะพะบะธั€ะพะฒะบะธ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ะฐ (GIL, Global Interpreter Lock), ะฝะต ะดะพะฟัƒัะบะฐัŽั‰ะตะน ะฟะฐั€ะฐะปะปะตะปัŒะฝะพะต ะพะฑั€ะฐั‰ะตะฝะธะต ะบ ั€ะฐะทะดะตะปัะตะผั‹ะผ ะพะฑัŠะตะบั‚ะฐะผ ะธะท ั€ะฐะทะฝั‹ั… ะฟะพั‚ะพะบะพะฒ, ั‡ั‚ะพ ะผะตัˆะฐะตั‚ ั€ะฐัะฟะฐั€ะฐะปะปะตะปะธะฒะฐะฝะธัŽ ะพะฟะตั€ะฐั†ะธะน ะฝะฐ ะผะฝะพะณะพัะดะตั€ะฝั‹ั… ัะธัั‚ะตะผะฐั…. ะ’ ะบะฐั‡ะตัั‚ะฒะต ะดั€ัƒะณะพะณะพ ะฒะฐั€ะธะฐะฝั‚ะฐ ั€ะตัˆะตะฝะธั ะฟั€ะพะฑะปะตะผั‹ ั GIL ั€ะฐะทะฒะธะฒะฐะตั‚ัั ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟั€ะธะฒัะทะบะธ ะพั‚ะดะตะปัŒะฝะพะณะพ GIL ะบ ะบะฐะถะดะพะผัƒ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ัƒ, ะฒั‹ะฟะพะปะฝัะตะผะพะผัƒ ะฒะฝัƒั‚ั€ะธ ะฟั€ะพั†ะตััะฐ (ะฒ ะพะดะฝะพะผ ะฟั€ะพั†ะตััะต ะผะพะถะตั‚ ะฒั‹ะฟะพะปะฝัั‚ัŒัั ะฝะตัะบะพะปัŒะบะพ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ะพะฒ, ะฝะพ ัั„ั„ะตะบั‚ะธะฒะฝะพัั‚ัŒ ะธั… ะฟะฐั€ะฐะปะปะตะปัŒะฝะพะณะพ ะฒั‹ะฟะพะปะฝะตะฝะธั ัƒะฟะธั€ะฐะตั‚ัั ะฒ GIL).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™