Konparezon pèfòmans chofè rezo a nan vèsyon nan 10 lang pwogramasyon

Yon gwoup chèchè nan inivèsite Alman yo pibliye jwenn eksperyans, pandan yo te devlope 10 vèsyon yon chofè estanda pou kat rezo Intel Ixgbe (X10xx) 5-gigabit nan diferan lang pwogramasyon. Chofè a kouri nan espas itilizatè epi li aplike nan C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript ak Python. Lè w ekri kòd, konsantre prensipal la te sou reyalize pi bon pèfòmans posib, pran an konsiderasyon karakteristik chak lang. Tout opsyon yo idantik nan fonksyonalite epi yo konpoze de apeprè 1000 liy kòd. Devlopman pwojè yo gaye anba lisans BSD.

Vèsyon an Rust nan chofè a te tounen trè pre nan pèfòmans nan chofè a referans nan lang C a. Anba yon chaj ak voye similtane nan blòk 32 pake, chofè a Rust te yon ti kras dèyè, men nan tès ki gen plis pase 32 pake pou chak blòk, vitès la te pratikman pa diferan de chofè a C ak demontre pèfòmans nan nivo a nan pwosesis 28 milyon dola. pake pa segonn sou yon sèvè ak yon CPU Xeon E3-1230 v2 3.3 GHz.

Konparezon pèfòmans chofè rezo a nan vèsyon nan 10 lang pwogramasyon

Pwochen nich la an tèm de pèfòmans te okipe pa chofè nan lang Go ak C #, ki te montre rezilta jistis pre (chofè Go a te genyen nan tès ak blòk ki rive jiska 16 pake, e li te kòmanse pèdi yon ti kras nan tès ki gen plis pase 16 pake. nan yon blòk). Avèk 256 pake pou chak blòk, pèfòmans pik chofè C# a te apeprè 28 milyon pake pa segonn, ak chofè Go a te apeprè 25 milyon pake pa segonn.

Apre sa, ak rezilta jistis fèmen, yo te chofè yo pou
Java, OCaml ak Haskell, ki te deja notables dèyè opsyon yo te konsidere anvan epi yo pa t 'kapab simonte 12 milyon pake yo pou chak dezyèm ba. Pilotè Swift ak JavaScript te montre yon lag menm pi gwo, yo te kapab trete kouran nan nivo 5 milyon pake pa segonn.

Chofè Python te konplete klasman an tèt la, ki te kapab trete sèlman 0.14 milyon pakè pa segonn. Yo te itilize aplikasyon Python pou evalye vitès entèprèt yo san JIT ak san optimize espesifik (yo te egzekite kòd la lè l sèvi avèk CPython 3.7 epi li pa t konpatib ak PyPy, men li te note ke optimize estrikti depo done yo te kapab amelyore pèfòmans apeprè 10 fwa. ).

Anplis de sa, tès latansi yo te fèt pou montre efikasite tanpon ak enpak pèseptè fatra a. Tès la te mezire latansi apre chofè a te voye chak pake konpare ak tan egzak li te voye. Lidè yo te toujou chofè C ak Rust, rezilta yo te pratikman endistenabl pou yon koule 1 milyon pake pa segonn (apeprè 20 µs). Chofè Go a te fè byen, li te sèlman yon ti kras dèyè lidè yo epi tou li rete nan nivo 20 µs. Chofè C# a te montre yon reta apeprè 50 µs.
Pi long reta yo te montre pa JavaScript ak Java chofè (latans ki gen plis pase 300 µs).

Konparezon pèfòmans chofè rezo a nan vèsyon nan 10 lang pwogramasyon

Etid la te fèt pou evalye posiblite pou devlope chofè ak konpozan sistèm opere nan lang ki pi wo pase C. Kounye a, 39 sou 40 pwoblèm memwa nan Linux gen rapò ak chofè yo, kidonk pwoblèm yo nan sèvi ak yon lang ki pi an sekirite ak deplase chofè yo soti nan nwayo a ak nan espas itilizatè. rete enpòtan ak manifaktirè yo deja fè eksperyans aktivman nan direksyon sa a (pa egzanp, Google te devlope yon pil TCP pou eksplwatasyon an Fuchsia nan lang Go, konpayi CloudFlare kreye aplikasyon pwotokòl QUIC nan Rust, Apple te deplase pil TCP la sou aparèy mobil nan espas itilizatè).

Nan kou a nan travay la, li te konkli ke lang nan Rust se kandida ki pi bon pou devlopman chofè. Kapasite Rust elimine pwoblèm ki asosye ak jesyon memwa ki ba-nivo a pri apeprè 2% a 10% pèt pèfòmans konpare ak chofè C yo. Go ak C# yo konsidere tou apwopriye pou kreye eleman sistèm nan sitiyasyon kote latansi anba-milisgond ki te koze pa koleksyon fatra akseptab.

Sous: opennet.ru

Add nouvo kòmantè