Comparáid a dhéanamh ar fheidhmíocht tiománaithe líonra i leaganacha i 10 dteanga ríomhchlárúcháin

Grúpa taighdeoirí ó ollscoileanna na Gearmáine foilsithe torthaí turgnamh, ar lena linn a forbraíodh 10 leagan de thiománaí caighdeánach le haghaidh cártaí líonra 10-gigabit Intel Ixgbe (X5xx) i dteangacha cláir éagsúla. Ritheann an tiománaí i spás úsáideora agus cuirtear i bhfeidhm é i C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript agus Python. Agus cód á scríobh, díríodh go príomha ar an bhfeidhmíocht is fearr is féidir a bhaint amach, ag cur saintréithe gach teanga san áireamh. Tá gach rogha comhionann ó thaobh feidhmiúlachta agus tá thart ar 1000 líne de chód iontu. Forbairtí tionscadail scaipeadh faoin gceadúnas BSD.

Bhí feidhmíocht leagan Rust an tiománaí an-ghar don tiománaí tagartha sa teanga C. Faoi ualach le seoladh comhuaineach de bhlocanna de 32 paicéad, bhí an tiománaí Rust beagán taobh thiar, ach i dtástálacha le níos mó ná 32 paicéad in aghaidh an bhloc, ní raibh an luas beagnach difriúil ón tiománaí C agus léirigh sé feidhmíocht ag an leibhéal próiseála 28 milliún. paicéid in aghaidh an tsoicind ar fhreastalaí le Xeon CPU E3-1230 v2 3.3 GHz.

Comparáid a dhéanamh ar fheidhmíocht tiománaithe líonra i leaganacha i 10 dteanga ríomhchlárúcháin

Ba iad tiománaithe sna teangacha Go agus C# a bhí sa chéad nideoige eile maidir le feidhmíocht, rud a léirigh torthaí measartha dlúth (bhuaigh an tiománaí Go i dtástálacha le bloic suas le 16 phaicéad, agus thosaigh sé ag cailleadh beagán i dtrialacha le níos mó ná 16 phaicéad. i mbloc). Le 256 paicéad in aghaidh an bhloc, b'ionann buaicfheidhmíocht an tiománaí C# agus thart ar 28 milliún paicéad in aghaidh an tsoicind, agus b'ionann an tiománaí Go agus thart ar 25 milliún paicéad in aghaidh an tsoicind.

Ina dhiaidh sin, le torthaí measartha dlúth, bhí na tiománaithe do
Java, OCaml agus Haskell, a bhí tite go suntasach cheana féin ar na roghanna a measadh roimhe seo agus nach bhféadfadh siad na 12 milliún paicéad in aghaidh an tsoicind a shárú. Léirigh tiománaithe Swift agus JavaScript moill níos mó fós, agus iad in ann sruthanna a phróiseáil ag leibhéal 5 milliún paicéad in aghaidh an tsoicind.

Chríochnaigh an tiománaí Python an rangú barr, a bhí in ann ach 0.14 milliún paicéad a phróiseáil in aghaidh an tsoicind. Baineadh úsáid as cur i bhfeidhm Python chun luas na n-ateangairí a mheas gan JIT agus gan optimizations sonracha (rinneadh an cód a fhorghníomhú ag baint úsáide as CPython 3.7 agus ní raibh sé ag luí le PyPy, ach tugtar faoi deara go bhféadfadh leas iomlán a bhaint as struchtúir stórála sonraí feabhas a chur ar fheidhmíocht thart ar 10 n-uaire. ).

Ina theannta sin, rinneadh tástálacha latency chun éifeachtacht maoláin agus tionchar an bhailitheora truflais a thaispeáint. Rinne an tástáil an latency a thomhas tar éis don tiománaí gach paicéad a chur ar aghaidh i gcomparáid leis an am cruinn a seoladh é. Bhí na ceannairí fós ina dtiománaithe C agus Rust, agus bhí na torthaí beagnach do-aitheanta do shreabhadh 1 milliún paicéad in aghaidh an tsoicind (thart ar 20 µs). D'éirigh go maith leis an tiománaí Go, gan ach beagán taobh thiar de na ceannairí agus d'fhan sé ag leibhéal 20 µs freisin. Léirigh an tiománaí C# moill de thart ar 50 µs.
Ba iad tiománaithe JavaScript agus Java a léirigh na moilleanna is faide (latrachtaí níos mó ná 300 µs).

Comparáid a dhéanamh ar fheidhmíocht tiománaithe líonra i leaganacha i 10 dteanga ríomhchlárúcháin

Rinneadh an staidéar chun measúnú a dhéanamh ar an bhféidearthacht tiománaithe agus comhpháirteanna córais oibriúcháin a fhorbairt i dteangacha ardleibhéil ná C. Faoi láthair, baineann 39 as 40 fadhb chuimhne i Linux le tiománaithe, mar sin tá na saincheisteanna a bhaineann le teanga níos sláine a úsáid agus tiománaithe a bhogadh amach as an eithne agus isteach i spás úsáideora. fós ábhartha agus tá monaróirí ag tástáil go gníomhach sa treo seo cheana féin (mar shampla, tá cruach TCP forbartha ag Google don OS Fuchsia i dteanga Go, cuideachta CloudFlare cruthaíodh chun prótacal QUIC a chur i bhfeidhm i Rust, tá Apple tar éis an chairn TCP ar ghléasanna soghluaiste a aistriú isteach sa spás úsáideora).

Le linn na hoibre, thángthas ar an gconclúid gurb í an teanga Rust an t-iarrthóir is fearr le haghaidh forbairt tiománaithe. Cuireann cumais Rust deireadh leis na fadhbanna a bhaineann le bainistíocht cuimhne ísealleibhéil ar chostas thart ar 2% go 10% de chaillteanas feidhmíochta i gcomparáid le tiománaithe C. Meastar go bhfuil Go agus C# oiriúnach freisin chun comhpháirteanna córais a chruthú i gcásanna ina bhfuil latency fo-millisecond de bharr bailiú truflais inghlactha.

Foinse: oscailtenet.ru

Add a comment