ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Π΅ Pyston-lite, JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π·Π° стоков 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 ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π±Π΅Π· Π΄Π° сС инсталира ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° функцията pyston_lite.enable().

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Pyston-lite Π½Π΅ ΠΏΠΎΠΊΡ€ΠΈΠ²Π° всички ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Pyston, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ позволява ΠΎΠΊΠΎΠ»ΠΎ 10-25% подобрСния Π½Π° производитСлността спрямо обикновСния Python 3.8. Π’ Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° прСнСсСм ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅, Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Pyston, към Pyston-lite, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΠΌ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈΡ‚Π΅ вСрсии Π½Π° 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€