Verglach vun Netz Chauffer Leeschtung a Versiounen an 10 programméiere Sproochen

Eng Grupp vu Fuerscher vun däitschen Universitéiten publizéiert d'Resultater experimentéieren, während deenen 10 Versioune vun engem Standard Chauffer fir 10-Gigabit Intel Ixgbe (X5xx) Netzwierkkaarten a verschiddene Programméierungssproochen entwéckelt goufen. De Chauffer leeft am Benotzerraum an ass an C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript a Python implementéiert. Beim Schreiwen vum Code war den Haaptfokus op déi beschtméiglech Leeschtung ze erreechen, andeems d'Charakteristike vun all Sprooch berücksichtegt ginn. All Optiounen sinn identesch a Funktionalitéit a besteet aus ongeféier 1000 Zeilen Code. Projet Entwécklungen ausbreeden ënner der BSD Lizenz.

D'Rust Versioun vum Chauffer huet sech an der Leeschtung ganz no beim Referenz Chauffer an der C Sprooch gewisen. Ënnert enger Laascht mat der simultaner Sendung vu Blocks vun 32 Pakete war de Rust Chauffer liicht hannendrun, awer an Tester mat méi wéi 32 Pakete pro Block war d'Geschwindegkeet praktesch net anescht wéi de C Chauffer an huet d'Leeschtung um Niveau vun der Veraarbechtung 28 Millioune bewisen. Pakete pro Sekonn op engem Server mat engem Xeon CPU E3-1230 v2 3.3 GHz.

Verglach vun Netz Chauffer Leeschtung a Versiounen an 10 programméiere Sproochen

Déi nächst Nisch wat d'Performance ugeet gouf vu Chauffeuren an de Go an C # Sprooche besat, déi zimlech enk Resultater gewisen hunn (de Go Chauffer huet an Tester mat Blocken vu bis zu 16 Päck gewonnen, an huet ugefaang liicht an Tester mat méi wéi 16 Päck ze verléieren an engem Block). Mat 256 Pakete pro Block war d'Peakleistung vum C # Chauffer ongeféier 28 Millioune Pakete pro Sekonn, an de Go Chauffer war ongeféier 25 Millioune Pakete pro Sekonn.

Als nächst, mat zimlech enke Resultater, waren d'Chauffeuren fir
Java, OCaml an Haskell, déi scho bemierkbar hannert de virdru betruechten Optiounen hannerlooss hunn an déi 12 Millioune Pakete pro Sekonn Bar net iwwerwanne konnten. Swift a JavaScript Chauffeuren hunn eng nach méi grouss Lag gewisen, kënnen Streams um Niveau vu 5 Millioune Pakete pro Sekonn veraarbechten.

Den Top Ranking gouf vum Python Chauffer ofgeschloss, deen nëmmen 0.14 Millioune Pakete pro Sekonn veraarbecht huet. D'Python-Implementatioun gouf benotzt fir d'Geschwindegkeet vun den Dolmetscher ouni JIT an ouni spezifesch Optimisatiounen ze evaluéieren (de Code gouf mat CPython 3.7 ausgefouert a war net kompatibel mat PyPy, awer et gëtt bemierkt datt d'Optimiséierung vun Datenspeicherstrukturen d'Performance ëm ongeféier 10 Mol verbesseren konnt. ).

Zousätzlech goufen latency Tester duerchgefouert fir d'Effektivitéit vum Puffer ze weisen an den Impakt vum Müllsammler. Den Test huet d'Latenz gemooss nodeems all Paket vum Chauffer weidergeleet gouf am Verglach mat der exakter Zäit wou et geschéckt gouf. D'Leader waren nach ëmmer d'C a Rust Chauffeuren, d'Resultater vun deenen praktesch net z'ënnerscheeden fir e Flux vun 1 Millioun Päck pro Sekonn (ongeféier 20 µs). De Go-Chauffer huet gutt geschafft, just liicht hannert de Leader an ass och um Niveau vun 20 µs bliwwen. Den C # Chauffer huet Verspéidungen vun ongeféier 50 µs gewisen.
Déi längste Verzögerungen goufen duerch JavaScript an Java Treiber gewisen (Latens vu méi wéi 300 µs).

Verglach vun Netz Chauffer Leeschtung a Versiounen an 10 programméiere Sproochen

D'Etude gouf duerchgefouert fir d'Méiglechkeet ze bewäerten Chauffeuren a Betribssystemkomponenten a méi héije Sprooche wéi C. De Moment sinn 39 vun 40 Erënnerungsproblemer am Linux mat Treiber verbonnen, sou datt d'Problemer vun enger méi sécherer Sprooch benotzen an Treiber aus dem Kernel an an de Benotzerraum bewegt relevant bleiwen an Hiersteller experimentéieren schonn aktiv an dëser Richtung (zum Beispill Google huet en TCP-Stack fir den OS entwéckelt Fuchsia an Go Sprooch, CloudFlare Firma geschaf Ëmsetzung vum QUIC Protokoll am Rust, Apple huet den TCP Stack op mobilen Apparater an de Benotzerraum geplënnert).

Am Laf vun der Aarbecht gouf ofgeschloss datt d'Rust Sprooch de beschte Kandidat fir d'Entwécklung vum Chauffeur ass. D'Kapazitéite vum Rust eliminéieren d'Problemer verbonne mat engem nidderegen Niveau Memory Gestioun op Käschte vun ongeféier 2% bis 10% Leeschtungsverloscht am Verglach mat C Chauffeuren. Go an C # ginn och als gëeegent ugesinn fir Systemkomponenten a Situatiounen ze kreéieren wou Ënner-Millisekonnen Latenz verursaacht duerch Müllsammlung akzeptabel ass.

Source: opennet.ru

Setzt e Commentaire