Papiso ea ts'ebetso ea mokhanni oa marang-rang liphetolelong tsa lipuo tse 10 tsa lenaneo

Sehlopha sa bafuputsi ba tsoang liunivesithing tsa Jeremane e phatlalalitsoeng liphello teko, nakong eo liphetolelo tse 10 tsa mokhanni ea tloaelehileng bakeng sa likarete tsa marang-rang tsa 10-gigabit Intel Ixgbe (X5xx) li ile tsa ntlafatsoa ka lipuo tse fapaneng tsa lenaneo. Mokhanni o matha sebakeng sa mosebedisi mme o kenngoa ts'ebetsong ho C, Rust, Go, C #, Java, OCaml, Haskell, Swift, JavaScript le Python. Ha ho ngoloa khoutu, sepheo se seholo e ne e le ho fihlela ts'ebetso e ntle ka ho fetisisa, ho ela hloko litšobotsi tsa puo ka 'ngoe. Likhetho tsohle li ts'oana ka ts'ebetso 'me li na le mela e ka bang 1000 ea khoutu. Lintlafatso tsa merero ho jaleha tlas'a laesense ea BSD.

Mofuta oa Rust oa mokhanni o ile oa bonahala o le haufi haholo ts'ebetsong ho mokhanni oa litšupiso ka puo ea C. Tlas'a mojaro o rometsoeng ka nako e le 'ngoe ea lipakete tsa lipakete tse 32, mokhanni oa Rust o ne a le morao hanyane, empa litekong tse nang le lipakete tse fetang 32 ka boloko, lebelo le ne le batla le sa fapane le mokhanni oa C mme a bonts'a ts'ebetso boemong ba ts'ebetso ea limilione tse 28. lipakete ka motsotsoana ho seva e nang le Xeon CPU E3-1230 v2 3.3 GHz.

Papiso ea ts'ebetso ea mokhanni oa marang-rang liphetolelong tsa lipuo tse 10 tsa lenaneo

Sebaka se latelang sa ts'ebetso se ne se tšoaretsoe ke bakhanni ba lipuo tsa Go le C #, tse bonts'itseng liphetho tse haufi haholo (mokhanni oa Go o hapile litekong tse nang le lipakete tse fihlang ho tse 16, mme a qala ho lahleheloa ke lipakete tse fetang 16. ka bolokong). Ka lipakete tse 256 bolokong bo bong, ts'ebetso ea tlhoro ea mokhanni oa C # e ne e ka ba lipakete tse limilione tse 28 motsotsoana, 'me mokhanni oa Go e ne e le lipakete tse ka bang limilione tse 25 motsotsoana.

E latelang, ka liphetho tse haufi haholo, e ne e le bakhanni ba
Java, OCaml le Haskell, tse neng li se li ntse li salletse ka morao ho likhetho tse neng li nahanoa pele mme li sa khone ho hlola lipakete tse limilione tse 12 ka bareng ea bobeli. Bakhanni ba Swift le JavaScript ba bonts'itse ho lieha ho hoholo, ho khona ho sebetsana le melapo ka lipakete tse limilione tse 5 motsotsoana.

Boemo bo holimo bo ile ba phethoa ke mokhanni oa Python, ea neng a khona ho sebetsana le lipakete tse limilione tse 0.14 feela ka motsotsoana. Ts'ebetsong ea Python e ne e sebelisetsoa ho lekola lebelo la bafetoleli ntle le JIT le ntle le ts'ebetso e khethehileng (khoutu e entsoe ka CPython 3.7 mme e ne e sa lumellane le PyPy, empa ho hlokomeloa hore ho ntlafatsa mekhoa ea polokelo ea data ho ka ntlafatsa tshebetso ka makhetlo a ka bang 10. ).

Ho feta moo, liteko tsa latency li ile tsa etsoa ho bonts'a katleho ea ho boloka lithōle le phello ea moqopi oa lithōle. Teko e ile ea lekanya latency ka mor'a hore pakete ka 'ngoe e fetisetsoe ke mokhanni ha e bapisoa le nako e tobileng eo e rometsoeng ka eona. Baeta-pele e ne e ntse e le bakhanni ba C le Rust, tseo liphello tsa tsona li neng li sa tsejoe hantle bakeng sa phallo ea lipakete tse limilione tse 1 motsotsoana (hoo e ka bang 20 µs). Mokhanni oa Go o sebelitse hantle, a le morao hanyane ho baetapele hape a ntse a le maemong a 20 µs. Mokhanni oa C# o bontšitse tieho ea hoo e ka bang 50 µs.
Litieho tse telele ka ho fetesisa li bontšitsoe ke bakhanni ba JavaScript le Java (latencies tse fetang 300 µs).

Papiso ea ts'ebetso ea mokhanni oa marang-rang liphetolelong tsa lipuo tse 10 tsa lenaneo

Boithuto bona bo entsoe ho lekola monyetla oa ho nts'etsapele bakhanni le likarolo tsa sistimi ea ts'ebetso ka lipuo tse maemong a holimo ho feta C. Hajoale, mathata a 39 ho a 40 a memori a Linux a amana le bakhanni, kahoo litaba tsa ho sebelisa puo e sireletsehileng haholoanyane le ho tsamaisa bakhanni ho tsoa kernel le ho kena sebakeng sa mosebelisi. lula u le bohlokoa mme bahlahisi ba se ba ntse ba leka ka matla ntlheng ena (mohlala, Google e thehile stack ea TCP bakeng sa OS Fuchsia ka puo ea Go, k'hamphani ea CloudFlare bōpiloe ts'ebetsong ea protocol ea QUIC ho Rust, Apple e tsamaisitse stack ea TCP ho lisebelisoa tsa cellular sebakeng sa mosebedisi).

Ha mosebetsi o ntse o tsoela pele, ho ile ha fihleloa qeto ea hore puo ea Rust ke mokhethoa ea molemo ka ho fetisisa bakeng sa nts'etsopele ea mokhanni. Bokhoni ba Rust bo felisa mathata a amanang le taolo ea memori ea boemo bo tlase ka litšenyehelo tsa tahlehelo ea ts'ebetso e ka bang 2% ho isa ho 10% ha e bapisoa le bakhanni ba C. Tsamaea le C # li boetse li nkoa li loketse ho theha likarolo tsa tsamaiso maemong ao ho 'ona sub-millisecond latency e bakoang ke pokello ea lithōle e amohelehang.

Source: opennet.ru

Eketsa ka tlhaloso