Klompok peneliti saka universitas Jerman
Versi Rust saka driver dadi banget cedhak karo kinerja driver referensi ing basa C. Ing beban kanthi ngirim pamblokiran 32 paket bebarengan, driver Rust rada ketinggalan, nanging ing tes kanthi luwih saka 32 paket saben blok, kacepetan meh ora beda karo driver C lan nuduhake kinerja ing tingkat pangolahan 28 yuta. paket per detik ing server karo Xeon CPU E3-1230 v2 3.3 GHz.
Niche sabanjure babagan kinerja dikuwasani dening pembalap ing basa Go lan C #, sing nuduhake asil sing cukup cedhak (pembalap Go menang ing tes kanthi pamblokiran nganti 16 paket, lan wiwit ilang rada ing tes kanthi luwih saka 16 paket. ing blok). Kanthi 256 paket saben blok, kinerja puncak driver C# kira-kira 28 yuta paket per detik, lan driver Go kira-kira 25 yuta paket per detik.
Sabanjure, karo asil nyedhaki cedhak, padha pembalap kanggo
Jawa, OCaml lan Haskell, kang wis noticeably ketinggalan opsi sadurunge dianggep lan ora bisa ngatasi 12 yuta paket saben bar detik. Pembalap Swift lan JavaScript nuduhake lag sing luwih gedhe, bisa ngolah stream ing tingkat 5 yuta paket per detik.
Peringkat paling dhuwur rampung dening pembalap Python, sing mung bisa ngolah 0.14 yuta paket per detik. Implementasi Python digunakake kanggo ngevaluasi kacepetan interpreter tanpa JIT lan tanpa optimasi tartamtu (kode kasebut dieksekusi nggunakake CPython 3.7 lan ora kompatibel karo PyPy, nanging dicathet yen optimasi struktur panyimpenan data bisa nambah kinerja kira-kira 10 kaping. ).
Kajaba iku, tes latensi ditindakake kanggo nuduhake efektifitas buffering lan dampak saka tukang sampah. Pengujian kasebut ngukur latensi sawise saben paket diterusake dening driver dibandhingake karo wektu sing tepat dikirim. Pimpinan kasebut isih dadi pembalap C lan Rust, asile meh ora bisa dibedakake kanggo aliran 1 yuta paket per detik (kira-kira 20 Β΅s). Pembalap Go nindakake kanthi apik, mung ana ing mburi pimpinan lan uga tetep ing level 20 Β΅s. Pembalap C # nuduhake wektu tundha kira-kira 50 Β΅s.
Tundha paling dawa dituduhake dening driver JavaScript lan Java (latensi luwih saka 300 Β΅s).
Panaliten kasebut ditindakake kanggo netepake kemungkinan ngembangake driver lan komponen sistem operasi ing basa tingkat sing luwih dhuwur tinimbang C. Saiki, 39 saka 40 masalah memori ing Linux ana hubungane karo driver, mula masalah nggunakake basa sing luwih aman lan mindhah driver metu saka kernel lan menyang ruang pangguna.
Sajrone karya, disimpulake yen basa Rust minangka calon paling apik kanggo pangembangan driver. Kapabilitas Rust ngilangi masalah sing ana gandhengane karo manajemen memori tingkat rendah kanthi biaya kira-kira 2% nganti 10% mundhut kinerja dibandhingake pembalap C. Go lan C # uga dianggep cocok kanggo nggawe komponen sistem ing kahanan sing latensi sub-milidetik sing disebabake pengumpulan sampah bisa ditampa.
Source: opennet.ru