Kundi la watafiti kutoka vyuo vikuu vya Ujerumani
Toleo la Rust la dereva liligeuka kuwa karibu sana katika utendaji wa dereva wa kumbukumbu katika lugha ya C. Chini ya mzigo na utumaji wa wakati huo huo wa vizuizi vya pakiti 32, dereva wa Rust alikuwa nyuma kidogo, lakini katika majaribio na pakiti zaidi ya 32 kwa kila block, kasi hiyo haikuwa tofauti na dereva wa C na ilionyesha utendaji katika kiwango cha usindikaji milioni 28. pakiti kwa sekunde kwenye seva iliyo na Xeon CPU E3-1230 v2 3.3 GHz.
Niche iliyofuata katika suala la utendaji ilichukuliwa na madereva katika lugha za Go na C #, ambayo ilionyesha matokeo ya karibu (dereva wa Go alishinda katika majaribio na vizuizi vya hadi pakiti 16, na alianza kupoteza kidogo katika majaribio na pakiti zaidi ya 16. katika block). Ikiwa na pakiti 256 kwa kila block, utendakazi wa kilele wa kiendesha C# ulikuwa takriban pakiti milioni 28 kwa sekunde, na kiendeshi cha Go kilikuwa takriban pakiti milioni 25 kwa sekunde.
Ifuatayo, kwa matokeo ya karibu sana, walikuwa madereva kwa
Java, OCaml na Haskell, ambazo tayari zilikuwa nyuma ya chaguzi zilizozingatiwa hapo awali na hazikuweza kushinda pakiti milioni 12 kwa kila baa ya pili. Viendeshaji vya Swift na JavaScript vilionyesha kuchelewa zaidi, kuwa na uwezo wa kuchakata mitiririko kwa kiwango cha pakiti milioni 5 kwa sekunde.
Kiwango cha juu kilikamilishwa na dereva wa Python, ambaye aliweza kusindika pakiti milioni 0.14 tu kwa sekunde. Utekelezaji wa Python ulitumiwa kutathmini kasi ya wakalimani bila JIT na bila uboreshaji maalum (msimbo ulitekelezwa kwa kutumia CPython 3.7 na haukuendana na PyPy, lakini inabainika kuwa uboreshaji wa miundo ya kuhifadhi data inaweza kuboresha utendaji kwa takriban mara 10. )
Zaidi ya hayo, majaribio ya muda wa kusubiri yalifanywa ili kuonyesha ufanisi wa kuhifadhi na athari za mtoaji wa takataka. Jaribio lilipima muda wa kusubiri baada ya kila pakiti kusambazwa na dereva ikilinganishwa na muda halisi ilipotumwa. Viongozi walikuwa bado madereva wa C na Rust, matokeo ambayo hayakuweza kutofautishwa kwa mtiririko wa pakiti milioni 1 kwa sekunde (takriban 20 Β΅s). Dereva wa Go alifanya vizuri, akiwa nyuma kidogo tu ya viongozi na pia kubaki katika kiwango cha 20 Β΅s. Dereva wa C# alionyesha ucheleweshaji wa takriban 50 Β΅s.
Ucheleweshaji mrefu zaidi ulionyeshwa na viendeshi vya JavaScript na Java (muda wa kusubiri wa zaidi ya 300 Β΅s).
Utafiti ulifanyika ili kutathmini uwezekano wa kuendeleza viendeshaji na vipengele vya mfumo wa uendeshaji katika lugha za kiwango cha juu kuliko C. Hivi sasa, shida 39 kati ya 40 za kumbukumbu katika Linux zinahusiana na viendeshaji, kwa hivyo maswala ya kutumia lugha salama zaidi na kusonga viendesha nje ya kernel na kuingia kwenye nafasi ya mtumiaji.
Wakati wa kazi hiyo, ilihitimishwa kuwa lugha ya Rust ndiyo mgombea bora wa maendeleo ya madereva. Uwezo wa kutu huondoa matatizo yanayohusiana na usimamizi wa kumbukumbu wa kiwango cha chini kwa gharama ya takriban 2% hadi 10% hasara ya utendaji ikilinganishwa na viendeshaji C. Go na C# pia huchukuliwa kuwa zinafaa kwa kuunda vipengee vya mfumo katika hali ambapo muda wa kusubiri wa milisekunde ndogo unaosababishwa na ukusanyaji wa takataka unakubalika.
Chanzo: opennet.ru