Alemaniako unibertsitateetako ikertzaile talde bat
Gidariaren Rust bertsioa C hizkuntzan erreferentziako kontrolatzailearen errendimenduan oso hurbila izan zen. 32 pakete-blokeak aldi berean bidaltzen zituen karga baten azpian, Rust kontrolatzailea apur bat atzeratuta zegoen, baina bloke bakoitzeko 32 pakete baino gehiagoko probetan, abiadura ez zen ia desberdina C kontrolatzailearen aldean eta 28 milioi prozesatzeko mailan errendimendua erakutsi zuen. segundoko paketeak Xeon CPU E3-1230 v2 3.3 GHz duen zerbitzari batean.
Errendimenduaren hurrengo nitxoa Go eta C# lengoaietako gidariek hartu zuten, eta emaitza nahiko hurbilak erakutsi zituzten (Go gidariak irabazi zuen 16 pakete arteko blokeekin egindako probetan, eta 16 pakete baino gehiagoko probetan apur bat galtzen hasi zen. bloke batean). Bloke bakoitzeko 256 paketerekin, C# kontrolatzailearen errendimendu gorena 28 milioi pakete segundoko izan da gutxi gorabehera, eta Go kontrolatzaileak segundoko 25 milioi pakete inguru.
Jarraian, emaitza nahiko hurbilekin, gidariak izan ziren
Java, OCaml eta Haskell, lehen kontuan hartutako aukeren atzean nabarmen geratzen zirenak eta ezin izan zituzten bigarren barrako 12 milioi pakete gainditu. Swift eta JavaScript kontrolatzaileek are atzerapen handiagoa erakutsi zuten, segundoko 5 milioi pakete mailan korronteak prozesatu ahal izateko.
Goiko sailkapena Python kontrolatzaileak osatu zuen, segundoko 0.14 milioi pakete soilik prozesatu ahal izan baitzituen. Python inplementazioa JIT gabe eta optimizazio zehatzik gabe interpreteen abiadura ebaluatzeko erabili zen (kodea CPython 3.7 erabiliz exekutatu zen eta ez zen PyPy-rekin bateragarria, baina datuen biltegiratze egituren optimizazioak errendimendua 10 aldiz inguru hobetu zezakeela nabarmentzen da. ).
Gainera, latentzia probak egin ziren, buffering-aren eraginkortasuna eta zabor-biltzailearen eragina erakusteko. Gidariak pakete bakoitza bidali ondoren latentzia neurtu zuen probak bidalitako denbora zehatzarekin alderatuta. Liderrak C eta Rust gidariak ziren oraindik, eta horien emaitzak ia ez ziren bereizten segundoko milioi 1 pakete (20 Β΅s gutxi gorabehera) fluxurako. Go gidaria ondo aritu zen, liderrengandik apur bat atzean geratu zen eta gainera 20 Β΅s-ko mailan mantendu zen. C# kontrolatzaileak gutxi gorabehera 50 Β΅s-ko atzerapenak erakutsi zituen.
Atzerapen luzeenak JavaScript eta Java kontrolatzaileek erakutsi zituzten (300 Β΅s baino gehiagoko latentzia).
Azterketa C baino goi-mailako lengoaietan kontrolatzaileak eta sistema eragilearen osagaiak garatzeko aukera ebaluatzeko egin da. Gaur egun, Linux-en 39 memoria-arazoetatik 40 gidariekin lotuta daude, beraz, hizkuntza seguruagoa erabiltzearen eta kontrolatzaileak nukleotik kanpo eta erabiltzaileen espaziora eramatearen arazoak.
Lanean zehar, Rust hizkuntza gidariaren garapenerako hautagairik onena dela ondorioztatu zen. Rust-en gaitasunek maila baxuko memoriaren kudeaketarekin lotutako arazoak ezabatzen dituzte, gutxi gorabehera % 2 eta % 10eko errendimendu galeraren kostuarekin C kontrolatzaileekin alderatuta. Go eta C# sistemaren osagaiak sortzeko ere egokiak dira zabor bilketak eragindako milisegundo azpiko latentzia onargarria den egoeretan.
Iturria: opennet.ru