Hoʻohālikelike i ka hana hoʻokele pūnaewele ma nā mana ma 10 mau ʻōlelo papahana

He pūʻulu o nā mea noiʻi mai nā kulanui Kelemania paʻi ʻia Nā hualoaʻa hoʻokolohua, i loko o ia mau mana he 10 o ka mea hoʻokele maʻamau no 10-gigabit Intel Ixgbe (X5xx) kāleka pūnaewele i hoʻomohala ʻia i nā ʻōlelo papahana like ʻole. Holo ka mea hoʻokele ma kahi o ka mea hoʻohana a hoʻokō ʻia ma C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript a me Python. I ke kākau ʻana i nā code, ʻo ka manaʻo nui i ka loaʻa ʻana o ka hana maikaʻi loa, me ka noʻonoʻo ʻana i nā ʻano o kēlā me kēia ʻōlelo. Ua like nā koho a pau i ka hana a aia ma kahi o 1000 laina o ke code. Nā hoʻomohala papahana pālahalaha aku ma lalo o ka laikini BSD.

ʻO ka mana Rust o ka mea hoʻokele i hoʻololi i kahi kokoke loa i ka hana i ka mea hoʻokele kuhikuhi ma ka ʻōlelo C. Ma lalo o ka ukana me ka hoʻouna like ʻana o nā poloka o 32 mau ʻeke, ua liʻiliʻi ka mea hoʻokele Rust, akā i nā hoʻāʻo me ka ʻoi aku ma mua o 32 mau paʻi i kēlā me kēia poloka, ʻaʻole ʻokoʻa ka wikiwiki mai ka mea hoʻokele C a hōʻike i ka hana ma ke kiʻekiʻe o ka hana 28 miliona. ʻeke i kēlā me kēia kekona ma kahi kikowaena me ka Xeon CPU E3-1230 v2 3.3 GHz.

Hoʻohālikelike i ka hana hoʻokele pūnaewele ma nā mana ma 10 mau ʻōlelo papahana

ʻO ka niche aʻe e pili ana i ka hana i noho ʻia e nā mea hoʻokele ma ka ʻōlelo Go a me C #, i hōʻike i nā hopena kokoke loa (ua lanakila ka mea hoʻokele Go ma nā hoʻokolohua me nā poloka a hiki i 16 mau paʻi, a hoʻomaka e nalo iki i nā hoʻokolohua me nā ʻeke 16 ʻoi aku. i loko o kahi poloka). Me nā ʻeke 256 i kēlā me kēia poloka, ʻo ka hana kiʻekiʻe o ka mea hoʻokele C# ma kahi o 28 miliona mau ʻeke i kēlā me kēia kekona, a ʻo ka mea hoʻokele Go ma kahi o 25 miliona mau ʻeke i kekona.

A laila, me nā hopena kokoke loa, nā mea hoʻokele no
ʻO Java, OCaml a me Haskell, ka mea i ʻike mua ʻia ma hope o nā koho i noʻonoʻo mua ʻia a ʻaʻole hiki ke lanakila i ka 12 miliona mau paʻi i kēlā me kēia pahu kekona. Ua hōʻike nā mea hoʻokele Swift a me JavaScript i kahi lag ʻoi aku ka nui, hiki iā ia ke hoʻoponopono i nā kahawai ma ke kiʻekiʻe o 5 miliona mau ʻeke i kēlā me kēia kekona.

Ua hoʻopau ʻia ka pae kiʻekiʻe e ka mea hoʻokele Python, hiki iā ia ke hana i ka 0.14 miliona mau paʻi i kēlā me kēia kekona. Ua hoʻohana ʻia ka hoʻokō Python e loiloi i ka wikiwiki o nā unuhi ʻōlelo me ka ʻole o JIT a me ka ʻole o nā optimizations kikoʻī (ua hoʻokō ʻia ke code me ka hoʻohana ʻana iā CPython 3.7 a ʻaʻole kūpono me PyPy, akā ʻike ʻia e hiki ke hoʻonui i ka hana ma kahi o 10 mau manawa. ).

Hoʻohui ʻia, ua hana ʻia nā hoʻokolohua latency e hōʻike i ka pono o ka buffering a me ka hopena o ka ʻohi ʻōpala. Ua ana ka ho'āʻo ʻana i ka latency ma hope o ka hoʻouna ʻia ʻana o kēlā me kēia ʻeke e ka mea hoʻokele i hoʻohālikelike ʻia me ka manawa pololei i hoʻouna ʻia ai. ʻO nā alakaʻi ka mea hoʻokele C a me Rust, ʻaʻole hiki ke ʻike ʻia nā hopena no ka holo ʻana o 1 miliona mau ʻeke i kekona (ma kahi o 20 µs). Ua hana maikaʻi ka mea hoʻokele Go, ma hope iki o nā alakaʻi a noho pū i ka pae o 20 µs. Ua hōʻike ka mea hoʻokele C# i nā lohi ma kahi o 50 µs.
Ua hōʻike ʻia nā lohi lōʻihi loa e nā mea hoʻokele JavaScript a me Java (ʻoi aku ka lōʻihi ma mua o 300 µs).

Hoʻohālikelike i ka hana hoʻokele pūnaewele ma nā mana ma 10 mau ʻōlelo papahana

Ua hana ʻia ke aʻo ʻana e loiloi i ka hiki ke hoʻomohala i nā mea hoʻokele a me nā ʻōnaehana ʻōnaehana ma nā ʻōlelo kiʻekiʻe ma mua o C. I kēia manawa, pili ka 39 o 40 mau pilikia hoʻomanaʻo ma Linux i nā mea hoʻokele, no laila nā pilikia o ka hoʻohana ʻana i kahi ʻōlelo paʻa a me ka neʻe ʻana i nā mea hoʻokele i waho o ka kernel a i ka wahi hoʻohana. noho pili a ke hoʻāʻo nei nā mea hana i kēia kuhikuhi (no ka laʻana, ua kūkulu ʻo Google i kahi TCP stack no ka OS Fuchsia ma ka ʻōlelo Go, ʻoihana CloudFlare hana ʻia ka hoʻokō ʻana i ka protocol QUIC ma Rust, ua hoʻoneʻe ʻo Apple i ka TCP stack ma nā polokalamu kelepona i kahi mea hoʻohana).

I ka wā o ka hana, ua hoʻoholo ʻia ʻo ka ʻōlelo Rust ka moho maikaʻi loa no ka hoʻomohala hoʻokele. Hiki i ka Rust ke hoʻopau i nā pilikia e pili ana i ka hoʻokele hoʻomanaʻo haʻahaʻa haʻahaʻa ma ke kumu kūʻai ma kahi o 2% a 10% ka nalowale o ka hana i hoʻohālikelike ʻia me nā mea hoʻokele C. Manaʻo ʻia ʻo Go a me C# he kūpono no ka hana ʻana i nā ʻāpana ʻōnaehana i nā kūlana i ʻae ʻia ka latency sub-millisecond i kumu ʻia e ka ʻohi ʻōpala.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka