Kwatanta aikin direban hanyar sadarwa a cikin sigogin cikin harsunan shirye-shirye 10

Ƙungiyar masu bincike daga jami'o'in Jamus aka buga sakamakon gwaji, a lokacin da aka haɓaka nau'ikan 10 na daidaitaccen direba don 10-gigabit Intel Ixgbe (X5xx) katunan cibiyar sadarwa a cikin harsunan shirye-shirye daban-daban. Direban yana aiki a sararin mai amfani kuma ana aiwatar dashi a cikin C, Rust, Go, C #, Java, OCaml, Haskell, Swift, JavaScript da Python. Lokacin rubuta lambar, babban abin da aka fi mayar da hankali shi ne a cimma mafi kyawun aiki, la'akari da halayen kowane harshe. Duk zažužžukan sun yi kama da aiki kuma sun ƙunshi kusan layukan lamba 1000. Ci gaban ayyukan yada ƙarƙashin lasisin BSD.

Sigar Rust ɗin direba ta juya ta kasance kusa da aiki ga direban tunani a cikin yaren C. A karkashin wani nauyi tare da aika tubalan na fakiti 32 na lokaci guda, direban Rust ya dan kadan a baya, amma a cikin gwaje-gwaje tare da fakiti sama da 32 a kowane toshe, saurin bai bambanta da direban C ba kuma ya nuna aikin a matakin sarrafa miliyan 28. fakiti a sakan daya akan sabar tare da Xeon CPU E3-1230 v2 3.3 GHz.

Kwatanta aikin direban hanyar sadarwa a cikin sigogin cikin harsunan shirye-shirye 10

Na gaba alkuki dangane da wasan kwaikwayon ya shagaltar da direbobi a cikin Go da C # harsuna, wanda ya nuna adalci kusa da sakamakon (direban Go ya ci nasara a cikin gwaje-gwaje tare da tubalan har zuwa fakiti 16, kuma ya fara rasa dan kadan a cikin gwaje-gwaje tare da fakiti sama da 16. a cikin block). Tare da fakiti 256 a kowane toshe, kololuwar aikin direban C # ya kai kusan fakiti miliyan 28 a sakan daya, kuma direban Go yana kusan fakiti miliyan 25 a sakan daya.

Na gaba, tare da kyakkyawan sakamako na kusa, sune direbobi don
Java, OCaml da Haskell, waɗanda tuni sun yi kasala a bayan zaɓin da aka yi la'akari da su a baya kuma ba za su iya shawo kan fakiti miliyan 12 a kowane mashaya na biyu ba. Direbobin Swift da JavaScript sun nuna koma baya mafi girma, suna iya sarrafa rafuka a matakin fakiti miliyan 5 a sakan daya.

Direban Python ya kammala babban matsayi, wanda ke iya sarrafa fakiti miliyan 0.14 kawai a cikin daƙiƙa guda. An yi amfani da aiwatar da Python don kimanta saurin masu fassarar ba tare da JIT ba kuma ba tare da takamaiman ingantawa ba (an aiwatar da lambar ta amfani da CPython 3.7 kuma ba ta dace da PyPy ba, amma an lura cewa inganta tsarin ajiyar bayanai zai iya inganta aikin ta kusan sau 10). ).

Bugu da ƙari, an gudanar da gwaje-gwajen latency don nuna tasiri na ɓarna da tasirin mai tara shara. Gwajin ya auna jinkirin bayan kowane fakiti direban ya tura shi idan aka kwatanta da ainihin lokacin da aka aika. Shugabannin sun kasance direbobin C da Rust, sakamakon da a zahiri ba a iya bambanta su ga kwararar fakiti miliyan 1 a cikin daƙiƙa guda (kimanin 20 µs). Direban Go ya yi kyau sosai, yana ɗan bayan shuwagabannin kuma ya rage a matakin 20µs. Direban C # ya nuna jinkiri na kusan 50 µs.
JavaScript da direbobin Java sun nuna mafi tsayin jinkiri (latencies fiye da 300 µs).

Kwatanta aikin direban hanyar sadarwa a cikin sigogin cikin harsunan shirye-shirye 10

An gudanar da binciken ne don tantance yuwuwar haɓaka direbobi da sassan tsarin aiki a cikin manyan harsuna fiye da C. A halin yanzu, 39 daga cikin 40 matsalolin ƙwaƙwalwar ajiya a cikin Linux suna da alaƙa da direbobi, don haka batutuwan amfani da ingantaccen harshe da fitar da direbobi daga kernel zuwa sararin mai amfani. ci gaba da dacewa kuma masana'antun sun riga sun yi gwaji sosai a cikin wannan jagorar (misali, Google ya haɓaka tari na TCP don OS Fuchsia a cikin harshen Go, kamfanin CloudFlare halitta aiwatar da ƙa'idar QUIC a cikin Rust, Apple ya matsar da tarin TCP akan na'urorin hannu zuwa sararin mai amfani).

A cikin aikin, an kammala cewa harshen Rust shine mafi kyawun ɗan takara don haɓaka direba. Ƙarfin Rust yana kawar da matsalolin da ke da alaƙa da ƙananan ƙwaƙwalwar ajiya a farashin kusan 2% zuwa 10% asarar aikin idan aka kwatanta da direbobin C. Go da C# kuma ana ganin sun dace da ƙirƙirar abubuwan tsarin a cikin yanayin da aka amince da latency na sub-millisecond sakamakon tarin shara.

source: budenet.ru

Add a comment