Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° производитСлността Π½Π° мрСТовия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π½Π° 10 Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅

Π“Ρ€ΡƒΠΏΠ° изслСдоватСли ΠΎΡ‚ гСрмански унивСрситСти ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π΄Π°Π½Π½ΠΈ СкспСримСнт, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ бяха Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ 10 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π·Π° 10-Π³ΠΈΠ³Π°Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ Intel Ixgbe (X5xx) Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² потрСбитСлско пространство ΠΈ Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ Π² C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript ΠΈ Python. ΠŸΡ€ΠΈ писанСто Π½Π° ΠΊΠΎΠ΄Π° Ρ„ΠΎΠΊΡƒΡΡŠΡ‚ бСшС Π²ΡŠΡ€Ρ…Ρƒ постиганСто Π½Π° възмоТно Π½Π°ΠΉ-висока производитСлност, ΠΊΠ°Ρ‚ΠΎ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ характСристикитС Π½Π° всСки Π΅Π·ΠΈΠΊ. По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° функционалността, всички ΠΎΠΏΡ†ΠΈΠΈ са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ ΠΈ сС ΡΡŠΡΡ‚ΠΎΡΡ‚ ΠΎΡ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 1000 Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄. ΠŸΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° разпространСниС ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· BSD.

Rust вСрсията Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° бСшС ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° ΠΏΠΎ производитСлност Π΄ΠΎ рСфСрСнтния C Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€. ΠŸΡ€ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ с Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ‚ 32 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ Π½Π° Rust ΠΈΠ·ΠΎΡΡ‚Π°Π²Π°ΡˆΠ΅ ΠΌΠ°Π»ΠΊΠΎ, Π½ΠΎ ΠΏΡ€ΠΈ тСстовС с ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 32 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° Π±Π»ΠΎΠΊ Ρ‚ΠΎΠΉ практичСски Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°ΡˆΠ΅ ΠΏΠΎ скорост ΠΎΡ‚ C Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ дСмонстрира производитСлност Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° 28 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² сСкунда Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ с Xeon CPU E3-1230 v2 3.3 GHz.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° производитСлността Π½Π° мрСТовия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π½Π° 10 Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° ниша ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° производитСлността бСшС Π·Π°Π΅Ρ‚Π° ΠΎΡ‚ Go ΠΈ C# Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° доста Π±Π»ΠΈΠ·ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ Go спСчСли Π² тСстовС с Π±Π»ΠΎΠΊΠΎΠ²Π΅, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ Π΄ΠΎ 16 ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π° Π»Π΅ΠΊΠΎ Π΄Π° Π³ΡƒΠ±ΠΈ Π² тСстовС с ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 16 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Π±Π»ΠΎΠΊ). Π‘ 256 ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° Π±Π»ΠΎΠΊ, ΠΏΠΈΠΊΠΎΠ²Π°Ρ‚Π° производитСлност Π·Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° C# бСшС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 28Mpps, Π° Π·Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅ Go ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 25Mpps.

На слСдващо място, с доста Π±Π»ΠΈΠ·ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, слСдван ΠΎΡ‚ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π·Π°
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).

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° производитСлността Π½Π° мрСТовия Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π½Π° 10 Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅

ΠŸΡ€ΠΎΡƒΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ, Π·Π° Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π½Π° Π΅Π·ΠΈΡ†ΠΈ Π½Π° ΠΏΠΎ-високо Π½ΠΈΠ²ΠΎ ΠΎΡ‚ C. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° 39 ΠΎΡ‚ 40 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° Linux са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-бСзопасСн Π΅Π·ΠΈΠΊ ΠΈ прСмСстванСто Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ извън ядрото Π² потрСбитСлското пространство остават Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ СкспСримСнтират Π² Ρ‚Π°Π·ΠΈ посока (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈ TCP стСк Π·Π° OS Ѐузия Π² Go, CloudFlare създадСн внСдряванС Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° QUIC Π² Rust, Apple прСмСсти TCP стСка Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ устройства Π² потрСбитСлско пространство).

Π’ Ρ…ΠΎΠ΄Π° Π½Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° бСшС Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‡Π΅ Π΅Π·ΠΈΠΊΡŠΡ‚ Rust Π΅ Π½Π°ΠΉ-добрият ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, прСдоставСни ΠΎΡ‚ Rust, Π²ΠΈ позволяват Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ, с Ρ†Π΅Π½Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ½ΠΈΠΆΠ°Π²Π°Π½Π΅ Π½Π° производитСлността ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 2%-10% Π² сравнСниС с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° C-Π΅Π·ΠΈΠΊ. УстановСно Π΅ ΡΡŠΡ‰ΠΎ, Ρ‡Π΅ Go ΠΈ C# са подходящи Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π² ситуации, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ забавянСто ΠΏΠΎΠ΄ милисСкунди, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΎ ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ€Π°Ρ‡Π° Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ, Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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