ΠΡΡΠΏΠΏΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· Π½Π΅ΠΌΠ΅ΡΠΊΠΈΡ
ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠΎΠ²
ΠΠ°ΡΠΈΠ°Π½Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΌΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ. ΠΡΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ Ρ Π΅Π΄ΠΈΠ½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎ 32 ΠΏΠ°ΠΊΠ΅ΡΠ° Rust-Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠ°Π²Π°Π», Π½ΠΎ Π² ΡΠ΅ΡΡΠ°Ρ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 32 ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π² Π±Π»ΠΎΠΊΠ΅ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π»ΡΡ ΠΎΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° Π‘ΠΈ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π» ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ 28 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Ρ CPU Xeon E3-1230 v2 3.3 GHz.
Π‘Π»Π΅Π΄ΡΡΡΡΡ Π½ΠΈΡΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π½ΡΠ»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Go ΠΈ Π‘#, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ (Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π½Π° Go Π²ΡΠΈΠ³ΡΡΠ²Π°Π» Π² ΡΠ΅ΡΡΠ°Ρ Ρ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΌΠΈ Π΄ΠΎ 16 ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈ ΡΡΠ°Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 16 ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π² Π±Π»ΠΎΠΊΠ΅). ΠΡΠΈ 256 ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π² Π±Π»ΠΎΠΊΠ΅ ΠΏΠΈΠΊΠΎΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° C# ΡΠΎΡΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 28 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π½Π° Go ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 25 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠ°Π»Π΅Π΅ Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΌΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π°
Java, OCaml ΠΈ Haskell, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΠΎΡΡΡΠ°Π²Π°Π»ΠΈ ΠΎΡ ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ ΠΏΠ»Π°Π½ΠΊΡ Π² 12 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΡ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΎΡΡΡΠ°Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π° Swift ΠΈ JavaScript, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ 5 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠ°ΠΌΠΊΠ½ΡΠ» ΡΠ΅ΠΉΡΠΈΠ½Π³ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠΎΠ³ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅Π³ΠΎ 0.14 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Python Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π±Π΅Π· JIT ΠΈ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ (ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CPython 3.7 ΠΈ Π½Π΅ Π±ΡΠ» ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ PyPy, Π½ΠΎ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π·).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Ρ ΡΠ΅ΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°. ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅ΡΡΠ»Π°ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ. ΠΠΈΠ΄Π΅ΡΠ°ΠΌΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΡΠ°Π»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π° Π‘ΠΈ ΠΈ Rust, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ»ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΎΡΠ»ΠΈΡΠΈΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠ° Π² 1 ΠΌΠ»Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ (ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 20 µs). Π₯ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΡΠ²ΠΈΠ» ΡΠ΅Π±Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Go, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠ°Π» ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠΎΠ² ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΡΠΆΠ°Π»ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ 20 µs. ΠΡΠ°ΠΉΠ²Π΅Ρ Π½Π° C# ΠΏΠΎΠΊΠ°Π·Π°Π» Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 50 µs.
Π‘Π°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ Π½Π° JavaScript ΠΈ Java (Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ 300 µs).
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Ρ ΡΠ΅Π»ΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ
Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ΅ΠΌ Π‘ΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ 39 ΠΈΠ· 40 ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π² Linux ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡΡΡ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ Π²ΡΠ½ΠΎΡΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΈΠ· ΡΠ΄ΡΠ° Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ΄Π΅Π»Π°Π½ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΡΠ·ΡΠΊ Rust ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΡΡΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ². ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² Rust Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΡΠ΅Π½ΠΎΠΉ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 2%-10% ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ. Π―Π·ΡΠΊΠΈ Go ΠΈ C# ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ·Π½Π°Π½Ρ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π΄ΠΎΠ»Π΅ΠΉ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru