Tqabbil tal-prestazzjoni tas-sewwieq tan-netwerk f'verżjonijiet f'10 lingwi ta' programmar

Grupp ta' riċerkaturi minn universitajiet Ġermaniżi ippubblikat ir-riżultati esperiment, li matulhom ġew żviluppati 10 verżjonijiet ta 'sewwieq standard għal kards tan-netwerk Intel Ixgbe (X10xx) ta' 5 gigabit f'lingwi ta 'programmar differenti. Is-sewwieq jaħdem fl-ispazju tal-utent u huwa implimentat f'C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript u Python. Meta tikteb il-kodiċi, l-enfasi ewlenija kienet fuq il-kisba tal-aħjar prestazzjoni possibbli, filwaqt li jitqiesu l-karatteristiċi ta 'kull lingwa. L-għażliet kollha huma identiċi fil-funzjonalità u jikkonsistu f'madwar 1000 linja ta 'kodiċi. Żviluppi tal-proġett jinfirex taħt liċenzja BSD.

Il-verżjoni Rust tas-sewwieq irriżulta li kienet qrib ħafna fil-prestazzjoni tas-sewwieq ta 'referenza fil-lingwa Ċ. Taħt tagħbija b'bgħit simultanju ta 'blokki ta' 32 pakkett, is-sewwieq Rust kien ftit lura, iżda f'testijiet b'aktar minn 32 pakkett għal kull blokka, il-veloċità ma kinitx prattikament differenti mis-sewwieq C u wera prestazzjoni fil-livell ta 'proċessar ta' 28 miljun pakketti kull sekonda fuq server b'Xeon CPU E3-1230 v2 3.3 GHz.

Tqabbil tal-prestazzjoni tas-sewwieq tan-netwerk f'verżjonijiet f'10 lingwi ta' programmar

In-niċċa li jmiss f'termini ta' prestazzjoni kienet okkupata minn sewwieqa fil-lingwi Go u C#, li wrew riżultati pjuttost mill-qrib (is-sewwieq tal-Go rebaħ f'testijiet bi blokki sa 16-il pakkett, u beda jitlef ftit f'testijiet b'aktar minn 16-il pakkett. fi blokk). B'256 pakkett għal kull blokka, l-ogħla prestazzjoni tas-sewwieq C# kienet ta 'madwar 28 miljun pakkett kull sekonda, u s-sewwieq Go kien madwar 25 miljun pakkett kull sekonda.

Sussegwentement, b'riżultati pjuttost qrib, kienu s-sewwieqa għal
Java, OCaml u Haskell, li diġà kienu għadhom notevoli wara l-għażliet meqjusa qabel u ma setgħux jegħlbu t-12-il miljun pakkett kull sekonda bar. Is-sewwieqa Swift u JavaScript wrew dewmien saħansitra akbar, li setgħu jipproċessaw flussi fil-livell ta '5 miljun pakkett kull sekonda.

L-ogħla klassifikazzjoni tlestiet mis-sewwieq Python, li kien kapaċi jipproċessa biss 0.14 miljun pakkett kull sekonda. L-implimentazzjoni Python intużat biex tevalwa l-veloċità tal-interpreti mingħajr JIT u mingħajr ottimizzazzjonijiet speċifiċi (il-kodiċi ġie esegwit bl-użu ta 'CPython 3.7 u ma kienx kompatibbli ma' PyPy, iżda huwa nnutat li l-ottimizzazzjoni tal-istrutturi tal-ħażna tad-dejta tista 'ttejjeb il-prestazzjoni b'madwar 10 darbiet. ).

Barra minn hekk, saru testijiet ta 'latency biex juru l-effettività tal-buffering u l-impatt tal-ġbir taż-żibel. L-ittestjar kejjel il-latency wara li kull pakkett ġie mgħoddi mis-sewwieq meta mqabbel mal-ħin eżatt li ntbagħat. Il-mexxejja kienu għadhom is-sewwieqa C u Rust, li r-riżultati tagħhom kienu prattikament indistingwibbli għal fluss ta '1 miljun pakkett kull sekonda (madwar 20 µs). Is-sewwieq tal-Go għamel prestazzjoni tajba, kien biss ftit wara l-leaders u baqa’ wkoll fil-livell ta’ 20 µs. Is-sewwieq C# wera dewmien ta' madwar 50 µs.
L-itwal dewmien intwera mis-sewwieqa ta' JavaScript u Java (latenzi ta' aktar minn 300 µs).

Tqabbil tal-prestazzjoni tas-sewwieq tan-netwerk f'verżjonijiet f'10 lingwi ta' programmar

L-istudju sar biex tiġi vvalutata l-possibbiltà li jiġu żviluppati sewwieqa u komponenti tas-sistema operattiva f'lingwi ta 'livell ogħla minn C. Bħalissa, 39 minn 40 problema tal-memorja fil-Linux huma relatati ma 'sewwieqa, għalhekk il-kwistjonijiet tal-użu ta' lingwa aktar sigura u s-sewwieqa li jċaqalqu 'l barra mill-kernel u fl-ispazju tal-utent jibqgħu rilevanti u l-manifatturi diġà qed jesperimentaw b'mod attiv f'din id-direzzjoni (per eżempju, Google żviluppat munzell TCP għall-OS Fuchsia bil-lingwa Go, kumpanija CloudFlare maħluqa implimentazzjoni tal-protokoll QUIC f'Rut, Apple ċċaqlaq il-munzell TCP fuq apparat mobbli fl-ispazju tal-utent).

Matul ix-xogħol, ġie konkluż li l-lingwa Rust hija l-aħjar kandidat għall-iżvilupp tas-sewwieqa. Il-kapaċitajiet tas-sadid jeliminaw il-problemi assoċjati mal-ġestjoni tal-memorja ta 'livell baxx għall-ispiża ta' madwar 2% sa 10% telf ta 'prestazzjoni meta mqabbla ma' sewwieqa C. Go u C# huma kkunsidrati wkoll adattati għall-ħolqien ta 'komponenti tas-sistema f'sitwazzjonijiet fejn latenza ta' taħt il-millisekonda kkawżata mill-ġbir taż-żibel hija aċċettabbli.

Sors: opennet.ru

Żid kumment