Iqela labaphandi abavela kwiiyunivesithi zaseJamani
Inguqulo ye-Rust yomqhubi yajika isondele kakhulu ekusebenzeni kumqhubi wereferensi ngolwimi lwe-C. Ngaphantsi komthwalo ngokuthunyelwa ngaxeshanye kweebhloko zeepakethi ze-32, umqhubi we-Rust wayesemva kancinci, kodwa kwiimvavanyo ezingaphezulu kweepakethi ezingama-32 kwibhloko nganye, isantya sasingahlukanga kumqhubi we-C kwaye wabonisa ukusebenza kwinqanaba lokusetyenzwa kwezigidi ezingama-28. iipakethe ngesekhondi kumncedisi nge Xeon CPU E3-1230 v2 3.3 GHz.
I-niche elandelayo ngokwemigaqo yokusebenza yayihlaliswe ngabaqhubi kwiilwimi ze-Go kunye ne-C #, ezibonise iziphumo ezisondeleyo (umqhubi we-Go uphumelele kwiimvavanyo kunye neebhloko ukuya kwiipakethi ze-16, kwaye waqala ukulahlekelwa kancinci kwiimvavanyo kunye neepakethi ezingaphezu kwe-16. kwibhloko). Ngeepakethe ezingama-256 kwibhloko nganye, ukusebenza okuphezulu komqhubi we-C# bekumalunga ne-28 yezigidi zeepakethi ngesekhondi, kwaye umqhubi we-Go ubemalunga ne-25 yezigidi zeepakethi ngesekhondi.
Okulandelayo, kunye neziphumo ezisondeleleneyo, yaba ngabaqhubi be
I-Java, i-OCaml kunye ne-Haskell, esele isele ishiywe ngokubonakalayo emva kweenketho ezicatshangelwayo ngaphambili kwaye ayikwazanga ukunqoba iipakethi ze-12 yezigidi ngebha yesibini. Abaqhubi be-Swift kunye neJavaScript babonise i-lag enkulu ngakumbi, ikwazi ukucubungula ukuhamba kwinqanaba le-5 yezigidi zeepakethi ngomzuzwana.
Uluhlu oluphezulu lwagqitywa ngumqhubi wePython, okwazile ukucubungula kuphela iipakethi ze-0.14 yezigidi ngesibini. Ukuphunyezwa kwePython kusetyenziswe ukuvavanya isantya seetoliki ngaphandle kweJIT kwaye ngaphandle kokulungiswa okuthe ngqo (ikhowudi yaphunyezwa kusetyenziswa iCPython 3.7 kwaye yayingahambelani nePyPy, kodwa kuphawulwe ukuba ukulungiswa kwezakhiwo zokugcina idatha kunokuphucula ukusebenza ngamaxesha angama-10. ).
Ukongeza, iimvavanyo ze-latency zenziwa ukubonisa ukusebenza kwe-buffering kunye nefuthe lomqokeleli wenkunkuma. Uvavanyo lulinganisa i-latency emva kokuba ipakethe nganye ithunyelwe ngumqhubi xa kuthelekiswa nexesha elichanekileyo elithunyelwe ngayo. Iinkokeli zazisengabaqhubi be-C kunye neRust, iziphumo zazo zazingabonakali kakuhle ukuhamba kwepakethi yesigidi esi-1 ngesekhondi (malunga nama-20 Β΅s). Umqhubi weGo uqhube kakuhle, esemva nje kancinane kwiinkokeli kwaye ekwahleli kwinqanaba lama-20 Β΅s. Umqhubi we-C# ubonise ulibaziseko malunga ne-50 Β΅s.
Olona libaziseko lude luboniswe yiJavaScript kunye nabaqhubi beJava (latencies ezingaphezu kwama-300 Β΅s).
Uphononongo lwenziwe ukuvavanya amathuba okuphuhlisa abaqhubi kunye nezixhobo zenkqubo yokusebenza kwiilwimi ezikumgangatho ophezulu kuneC. Okwangoku, i-39 kwi-40 yeengxaki zememori kwi-Linux zihambelana nabaqhubi, ngoko ke imiba yokusebenzisa ulwimi olukhuselekileyo kunye nokuhambisa abaqhubi ngaphandle kwe-kernel kunye nendawo yomsebenzisi.
Ekuhambeni komsebenzi, kwagqitywa ukuba ulwimi lweRust ngoyena mgqatswa wophuhliso lwabaqhubi. Ubunakho be-Rust buphelisa iingxaki ezinxulumene nolawulo lwememori yenqanaba elisezantsi ngexabiso elimalunga ne-2% ukuya kwi-10% yelahleko yokusebenza xa kuthelekiswa nabaqhubi be-C. I-Go kunye ne-C # nazo zibhekwa njengezifanelekileyo ekudaleni amacandelo enkqubo kwiimeko apho i-sub-millisecond latency ebangelwa ukuqokelelwa kwenkunkuma iyamkeleka.
umthombo: opennet.ru