Ntụle arụmọrụ ọkwọ ụgbọ ala netwọkụ na ụdị n'asụsụ mmemme 10

Otu ndị nyocha si mahadum German bipụtara nsonaazụ ya эksperimenta, n'oge nke 10 ụdị nke ọkọlọtọ ọkwọ ụgbọala maka 10-gigabit Intel Ixgbe (X5xx) netwọk kaadị na asụsụ mmemme dị iche iche. Onye ọkwọ ụgbọ ala na-agba ọsọ na oghere onye ọrụ ma tinye ya na C, Rust, Go, C #, Java, OCaml, Haskell, Swift, JavaScript na Python. Mgbe ị na-ede koodu, isi ihe lekwasịrị anya bụ iji nweta arụmọrụ kacha mma, na-eburu n'uche njirimara asụsụ ọ bụla. Nhọrọ niile bụ otu n'ime ọrụ yana ihe mejupụtara koodu koodu 1000. Mmepe oru ngo kesaa n'okpuru ikikere BSD.

Ụdị nchara nke onye ọkwọ ụgbọ ala tụgharịrị dị nso na arụmọrụ na onye ọkwọ ụgbọ ala n'asụsụ C. N'okpuru ibu nke na-ezigara ngọngọ nke ngwugwu 32 n'otu oge, onye ọkwọ ụgbọ ala ahụ dị ntakịrị n'azụ, mana na ule nwere ihe karịrị ngwugwu 32 kwa ngọngọ, ọsọ ahụ adịghị iche na onye ọkwọ ụgbọ ala C ma gosipụta arụmọrụ na ọkwa nhazi 28 nde. ngwugwu kwa sekọnd na sava nwere Xeon CPU E3-1230 v2 3.3 GHz.

Ntụle arụmọrụ ọkwọ ụgbọ ala netwọkụ na ụdị n'asụsụ mmemme 10

Niche na-esote n'ihe banyere arụmọrụ bụ ndị ọkwọ ụgbọ ala nọ na asụsụ Go na C #, nke gosipụtara nsonaazụ nso (onye ọkwọ ụgbọ ala Go meriri na ule nwere ihe mgbochi ruru 16 ngwugwu, wee malite ida ntakịrị na ule nwere ihe karịrị ngwugwu 16. na ngọngọ). Site na ngwugwu 256 kwa ngọngọ, arụmọrụ kacha elu nke onye ọkwọ ụgbọ ala C # dị ihe dị ka ngwugwu nde 28 kwa nkeji, na onye ọkwọ ụgbọ ala Go bụ ihe dị ka ngwugwu nde 25 kwa nkeji.

Na-esote, na nsonaazụ nso nso, bụ ndị ọkwọ ụgbọ ala maka
Java, OCaml na Haskell, bụ ndị na-adabagoro nke ọma na nhọrọ ndị a tụlere na mbụ na enweghị ike imeri ngwugwu nde iri na abụọ kwa ụlọ mmanya nke abụọ. Ndị ọkwọ ụgbọ ala Swift na Javascript gosipụtara lag dị ukwuu, na-enwe ike ịhazi iyi na ọkwa nke ngwugwu 12 nde kwa sekọnd.

Onye ọkwọ ụgbọ ala Python mezuru ọkwa kachasị elu, nke nwere ike hazie naanị ngwugwu 0.14 nde kwa sekọnd. Ejiri mmemme Python nyochaa ọsọ nke ndị ntụgharị na-enweghị JIT na enweghị ezigbo njikarịcha (a na-eji CPython 3.7 mee koodu ahụ ma ọ dabara na PyPy, mana achọpụtara na njikarịcha nke usoro nchekwa data nwere ike imeziwanye arụmọrụ site n'ihe dị ka ugboro 10. ).

Na mgbakwunye, e mere ule latency iji gosi ịdị irè nke nchekwa na mmetụta nke mkpofu ahịhịa. Nnwale a tụrụ n'azụ ka onye ọkwọ ụgbọ ala bufere ngwugwu ọ bụla ma e jiri ya tụnyere oge ezigara ya. Ndị isi ahụ ka bụ ndị ọkwọ ụgbọ ala C na Rust, nsonaazụ ya bụ nke a na-apụghị ịmata nke ọma maka ntinye nke ngwugwu nde 1 kwa nkeji (ihe dị ka 20 µs). Onye ọkwọ ụgbọ ala Go ahụ rụrụ nke ọma, na-anọ naanị ntakịrị n'azụ ndị isi wee nọrọkwa n'ọkwa 20µs. Onye ọkwọ ụgbọ ala C # gosipụtara igbu oge ihe dịka 50µs.
Javascript na ndị ọkwọ ụgbọ ala Java gosipụtara igbu oge kacha ogologo (latencies nke karịrị 300µs).

Ntụle arụmọrụ ọkwọ ụgbọ ala netwọkụ na ụdị n'asụsụ mmemme 10

Emere ọmụmụ ihe ahụ iji chọpụta ohere nke ịmepụta ndị ọkwọ ụgbọ ala na akụrụngwa sistemụ n'asụsụ dị elu karịa C. Ugbu a, nsogbu ebe nchekwa 39 n'ime 40 dị na Linux metụtara ndị ọkwọ ụgbọ ala, yabụ okwu gbasara iji asụsụ dị nchebe karịa na ịkwaga ndị ọkwọ ụgbọ ala na kernel wee banye oghere ndị ọrụ. nọgide na-adị mkpa na ndị na-emepụta ihe na-agbasi mbọ ike na ntụziaka a (dịka ọmụmaatụ, Google ewepụtala nchịkọta TCP maka OS Fuchsia n'asụsụ Go, ụlọ ọrụ CloudFlare kere mmejuputa QUIC protocol na Rust, Apple ebugharịla ngwugwu TCP na ngwaọrụ mkpanaka n'ime oghere ndị ọrụ).

N'ime ọrụ ahụ, e kwubiri na asụsụ Rust bụ onye kachasị mma maka mmepe ọkwọ ụgbọala. Ike nke rust na-ewepụ nsogbu ndị metụtara njikwa ebe nchekwa dị ala na ọnụ ahịa ihe dị ka 2% ruo 10% mfu arụmọrụ ma e jiri ya tụnyere ndị ọkwọ ụgbọala C. A na-ahụtakwa Go na C # dị mma maka imepụta akụrụngwa sistemu n'ọnọdụ ebe a na-anakwere nkwụsịtụ obere nkeji nkeji nke nchịkọta mkpofu kpatara.

isi: opennet.ru

Tinye a comment