ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ DeepMind, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ°Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°, ΠΎΡΠΊΡΡΠ»Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° S6, ΡΠ°Π·Π²ΠΈΠ²Π°Π²ΡΠ΅Π³ΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Python. ΠΡΠΎΠ΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Ρ ΡΡΠ°ΡΠ½ΡΠΌ CPython, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ»Π½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ CPython ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΠΎΠ΅ΠΊΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΡΡ Ρ 2019 Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π±ΡΠ» ΡΠ²ΡΡΠ½ΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Python, Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ. ΠΠΎΠ΄ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ C++, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° CPython 3.7. ΠΈ ΠΎΡΠΊΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.
ΠΠΎ ΡΠ΅ΡΠ°Π΅ΠΌΡΠΌ Π·Π°Π΄Π°ΡΠ°ΠΌ S6 Π΄Π»Ρ Python ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ V8 Π΄Π»Ρ JavaScript. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ceval.c ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. S6 ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π»ΠΈ ΡΠΆΠ΅ ΡΠ΅ΠΊΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ, Π΅ΡΠ»ΠΈ Π΄Π° — ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, Π° Π΅ΡΠ»ΠΈ Π½Π΅Ρ — Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π±Π°ΠΉΡΠΊΠΎΠ΄Π°, ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ CPython. ΠΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠΎΡΠ»Π΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΡΠ±Π΅ΠΆΠ° Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ strongjit, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ asmjit.
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ S6 ΠΏΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² Π΄ΠΎ 9.5 ΡΠ°Π· Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ CPython. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ 100 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Richards Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π² 7 ΡΠ°Π·, Π° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΡΠ° Raytrace, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΡΠΌ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, — Π² 3-4.5 ΡΠ°Π·Π°.
ΠΠ· Π·Π°Π΄Π°Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»ΠΎΡ
ΠΎ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ S6, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ C API, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NumPy, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π΄Π»Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ·-Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² S6 ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Python-ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π»Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅ΡΡΠ΅ Unpack Sequence, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΌ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ Π±ΠΎΠ»ΡΡΠΈΡ
Π½Π°Π±ΠΎΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²/ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, ΠΏΡΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ Π½Π°Π±Π»ΡΠ΄Π°ΡΡΡΡ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ 5 ΡΠ°Π·, Π° ΠΏΡΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ — ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 0.97 ΠΎΡ CPython.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru