Skupina istraživača s njemačkih sveučilišta
Pokazalo se da je Rust verzija upravljačkog programa po performansama vrlo bliska referentnom upravljačkom programu u jeziku C. Pod opterećenjem s istodobnim slanjem blokova od 32 paketa, Rust driver je malo zaostajao, ali u testovima s više od 32 paketa po bloku, brzina se praktički nije razlikovala od C drivera i pokazao je performanse na razini obrade 28 milijuna paketa u sekundi na poslužitelju s Xeon CPU E3-1230 v2 3.3 GHz.
Sljedeću nišu u pogledu performansi zauzeli su upravljački programi u jezicima Go i C#, koji su pokazali prilično bliske rezultate (Go upravljački program je pobijedio u testovima s blokovima do 16 paketa, a počeo lagano gubiti u testovima s više od 16 paketa u bloku). S 256 paketa po bloku, vršna izvedba C# drajvera bila je približno 28 milijuna paketa u sekundi, a Go drajvera bila je približno 25 milijuna paketa u sekundi.
Sljedeći, s prilično tijesnim rezultatima, bili su vozači za
Java, OCaml i Haskell, koji su već osjetno zaostajali za prethodno razmatranim opcijama i nisu mogli prevladati traku od 12 milijuna paketa u sekundi. Swift i JavaScript upravljački programi pokazali su još veći zaostatak, jer su mogli obraditi streamove na razini od 5 milijuna paketa u sekundi.
Vrh ljestvice dopunio je Python driver koji je uspio obraditi samo 0.14 milijuna paketa u sekundi. Implementacija Pythona korištena je za procjenu brzine tumača bez JIT-a i bez specifičnih optimizacija (kôd je izvršen korištenjem CPython 3.7 i nije bio kompatibilan s PyPy, no napominje se da bi optimizacija struktura za pohranu podataka mogla poboljšati performanse za oko 10 puta ).
Dodatno, provedeni su testovi latencije kako bi se pokazala učinkovitost međuspremnika i utjecaj sakupljača smeća. Testiranje je mjerilo kašnjenje nakon što je svaki paket proslijeđen od strane vozača u usporedbi s točnim vremenom kada je poslan. Vodeći su i dalje C i Rust drajveri, čiji su rezultati bili praktički nerazlučivi za protok od 1 milijun paketa u sekundi (otprilike 20 µs). Go vozač se dobro pokazao, tek neznatno je zaostao za vodećima i također ostao na razini od 20 µs. C# upravljački program pokazao je kašnjenja od približno 50 µs.
Najduža kašnjenja pokazala su JavaScript i Java drajveri (latencije veće od 300 µs).
Studija je provedena kako bi se procijenila mogućnost razvoja upravljačkih programa i komponenti operativnog sustava na jezicima više razine od C. Trenutačno je 39 od 40 problema s memorijom u Linuxu povezano s upravljačkim programima, dakle problemi korištenja sigurnijeg jezika i premještanja upravljačkih programa iz kernela u korisnički prostor
Tijekom rada zaključeno je da je Rust jezik najbolji kandidat za razvoj drajvera. Rustove mogućnosti eliminiraju probleme povezane s upravljanjem memorijom niske razine po cijenu približno 2% do 10% gubitka performansi u usporedbi s C drajverima. Go i C# također se smatraju prikladnima za stvaranje komponenti sustava u situacijama u kojima je prihvatljivo kašnjenje ispod milisekunde uzrokovano skupljanjem smeća.
Izvor: opennet.ru