Skupina výskumníkov z nemeckých univerzít
Ukázalo sa, že verzia ovládača Rust je výkonovo veľmi blízka referenčnému ovládaču v jazyku C. Pri záťaži so súčasným odosielaním blokov 32 paketov síce Rust driver mierne zaostával, no v testoch s viac ako 32 paketmi na blok sa rýchlosť prakticky nelíšila od C drivera a predviedol výkon na úrovni spracovania 28 mil. paketov za sekundu na serveri s procesorom Xeon E3-1230 v2 3.3 GHz.
Ďalšie miesto z hľadiska výkonu obsadili ovládače v jazykoch Go a C#, ktoré vykazovali pomerne tesné výsledky (ovládač Go zvíťazil v testoch s blokmi až 16 paketov a začal mierne strácať v testoch s viac ako 16 paketmi. v bloku). Pri 256 paketoch na blok bol špičkový výkon ovládača C# približne 28 miliónov paketov za sekundu a ovládača Go približne 25 miliónov paketov za sekundu.
Ďalej, s pomerne tesnými výsledkami, boli vodiči pre
Java, OCaml a Haskell, ktoré už výrazne zaostávali za predtým zvažovanými možnosťami a nedokázali prekonať 12 miliónov paketov za sekundu. Ovládače Swift a JavaScript vykazovali ešte väčšie oneskorenie, pretože dokázali spracovať streamy na úrovni 5 miliónov paketov za sekundu.
Najvyššie hodnotenie doplnil ovládač Python, ktorý dokázal spracovať iba 0.14 milióna paketov za sekundu. Implementácia Pythonu sa použila na vyhodnotenie rýchlosti tlmočníkov bez JIT a bez špecifických optimalizácií (kód bol vykonaný pomocou CPythonu 3.7 a nebol kompatibilný s PyPy, ale treba poznamenať, že optimalizácia štruktúr ukladania údajov by mohla zvýšiť výkon približne 10-krát ).
Okrem toho sa vykonali testy latencie, aby sa preukázala účinnosť vyrovnávacej pamäte a vplyv zberača odpadu. Testovanie meralo latenciu po preposlaní každého paketu ovládačom v porovnaní s presným časom jeho odoslania. Na čele boli stále ovládače C a Rust, ktorých výsledky boli prakticky nerozoznateľné pri toku 1 milióna paketov za sekundu (približne 20 µs). Ovládač Go fungoval dobre, len mierne zaostával za lídrami a tiež zostal na úrovni 20 µs. Ovládač C# vykazoval oneskorenie približne 50 µs.
Najdlhšie oneskorenia vykazovali ovládače JavaScript a Java (latencie viac ako 300 µs).
Štúdia bola vykonaná s cieľom posúdiť možnosť vývoja ovládačov a komponentov operačného systému v jazykoch vyššej úrovne ako C. V súčasnosti 39 zo 40 problémov s pamäťou v Linuxe súvisí s ovládačmi, takže problémy s používaním bezpečnejšieho jazyka a presúvaním ovládačov z jadra do užívateľského priestoru
V priebehu práce sa dospelo k záveru, že jazyk Rust je najlepším kandidátom na vývoj ovládačov. Schopnosti Rustu eliminujú problémy spojené so správou pamäte na nízkej úrovni za cenu približne 2 až 10 % straty výkonu v porovnaní s ovládačmi C. Go a C# sa tiež považujú za vhodné na vytváranie systémových komponentov v situáciách, kde je prijateľná submilisekundová latencia spôsobená zberom odpadu.
Zdroj: opennet.ru