ΠΡΡΠΏΠ° ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΈ ΠΎΠ΄ Π³Π΅ΡΠΌΠ°Π½ΡΠΊΠΈ ΡΠ½ΠΈΠ²Π΅ΡΠ·ΠΈΡΠ΅ΡΠΈ
ΠΠ΅ΡΠ·ΠΈΡΠ°ΡΠ° Rust Π½Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π±Π»ΠΈΡΠΊΠ° Π²ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π΄ΠΎ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈΠΎΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C. ΠΠΎΠ΄ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΎΠ΄ 32 ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΎΡ Rust Π·Π°ΠΎΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΠΌΠ°Π»ΠΊΡ, Π½ΠΎ Π²ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 32 ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΠΎ Π±Π»ΠΎΠΊ, Π±ΡΠ·ΠΈΠ½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΎΠ΄ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΎΡ C ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° 28 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎ Xeon CPU E3-1230 v2 3.3 GHz.
Π‘Π»Π΅Π΄Π½Π°ΡΠ° Π½ΠΈΡΠ° Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π±Π΅ΡΠ΅ ΠΎΠΊΡΠΏΠΈΡΠ°Π½Π° ΠΎΠ΄ Π²ΠΎΠ·Π°ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈΡΠΈΡΠ΅ Go ΠΈ C#, ΠΊΠΎΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°Π° ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π±Π»ΠΈΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ (Π²ΠΎΠ·Π°ΡΠΎΡ 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 ΠΏΠ°ΡΠΈ ).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π±Π΅Π° ΡΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π·Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ Π·Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° ΡΠ°ΠΌΠΏΠΎΠ½ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΈ Π²Π»ΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠΎΡ Π½Π° ΡΡΠ±ΡΠ΅. Π’Π΅ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ ΡΠ° ΠΌΠ΅ΡΠΈ Π΄ΠΎΡΠ½Π΅ΡΠ΅ΡΠΎ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ΠΊΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ ΠΎΠ΄ Π²ΠΎΠ·Π°ΡΠΎΡ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ ΡΠΎΡΠ½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠΎΠ³Π° Π±Π΅ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ΅Π½. ΠΠΈΠ΄Π΅ΡΠΈΡΠ΅ ΡΓ¨ ΡΡΡΠ΅ Π±Π΅Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° C ΠΈ Rust, ΡΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π½Π΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π° Π·Π° ΠΏΡΠΎΡΠΎΠΊ ΠΎΠ΄ 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π° (ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 20 Β΅s). ΠΠΎΠ·Π°ΡΠΎΡ Π½Π° Go ΡΠ΅ ΠΏΡΠ΅ΡΡΡΠ°Π²ΠΈ Π΄ΠΎΠ±ΡΠΎ, Π·Π°ΠΎΡΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΊΡ Π·Π°Π΄ Π²ΠΎΠ΄Π΅ΡΠΊΠΈΡΠ΅ ΠΈ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΡΡΠ°Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠ΄ 20 Β΅s. ΠΠΎΠ·Π°ΡΠΎΡ Π½Π° C# ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄ΠΎΡΠ½Π΅ΡΠ° ΠΎΠ΄ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 50 Β΅s.
ΠΠ°ΡΠ΄ΠΎΠ»Π³ΠΈΡΠ΅ Π΄ΠΎΡΠ½Π΅ΡΠ° Π³ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°Π° JavaScript ΠΈ Java Π΄ΡΠ°ΡΠ²Π΅ΡΠΈΡΠ΅ (Π»Π°ΡΠ΅Π½ΡΠΈΠΈ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 300 Β΅s).
Π‘ΡΡΠ΄ΠΈΡΠ°ΡΠ° Π±Π΅ΡΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ°Π·ΠΈΡΠΈ Π½Π° ΠΏΠΎΠ²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΎΠ΄ C. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², 39 ΠΎΠ΄ 40 ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π²ΠΎ Linux ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ Π΄ΡΠ°ΡΠ²Π΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΈΠΊ ΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΡΠ°ΡΠ²Π΅ΡΠΈΡΠ΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ ΠΈ Π²ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΡΠΎΡ
ΠΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ°, Π±Π΅ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π΄Π΅ΠΊΠ° ΡΠ°Π·ΠΈΠΊΠΎΡ Rust Π΅ Π½Π°ΡΠ΄ΠΎΠ±ΡΠΈΠΎΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π²ΠΎΠ·Π°ΡΠΎΡ. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° Rust Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎ ΡΠ΅Π½Π° ΠΎΠ΄ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 2% Π΄ΠΎ 10% Π³ΡΠ±Π΅ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈΡΠ΅ C. Go ΠΈ C# ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΌΠ΅ΡΠ°Π°Ρ Π·Π° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²ΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π΅ ΠΏΡΠΈΡΠ°ΡΠ»ΠΈΠ²ΠΎ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΏΠΎΠ΄ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΠ΄ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ±ΡΠ΅.
ΠΠ·Π²ΠΎΡ: opennet.ru