Hacker News

Anyị jikọtara C++ nwere eriri nwere ọtụtụ eriri

Anyị jikọtara C++ nwere eriri nwere ọtụtụ eriri Ntụle zuru oke nke interfaced na-enye nyocha zuru oke nke ihe ndị mejupụtara ya na ihe ọ pụtara. Akụkụ ndị bụ isi nke elekwasị anya Mkparịta ụka a gbadoro ụkwụ na: Core mech...

8 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
Nke a bụ blọọgụ SEO zuru ezu:

Anyị jikọtara C++ nwere otu eriri na nchara ọtụtụ

Ịmekọrịta koodu C++ nwere otu-threaded na nchara multi-threaded abụghị naanị ekwe omume - ọ bụ otu n'ime ụzọ kachasị mma isi mee ka usoro ihe nketa dị ọhụrụ na-enweghị idegharị zuru ezu. Na Mewayz, anyị gbochiri ihe ịma aka a kpọmkwem mgbe anyị na-enyocha OS azụmahịa 207-module anyị iji jeere ndị ọrụ 138,000 ozi, nsonaazụ ya gbanwere n'ụzọ doro anya ka anyị si eche maka mmekọrịta mmekọrịta.

Gịnị kpatara ị ga-eji nwee nchara nchara dị otu ya?

Ọtụtụ usoro mmepụta na-ebu koodu C++ nke agha nwalere ọtụtụ afọ. Idegharị ihe niile na Rust na-ada ụda na-adọrọ mmasị na akwụkwọ, mana ọ na-ewebata nnukwu ihe egwu na ọnwa nke oge injinia. Ụzọ dị irè bụ nkuchi abawanye - na-ekpuchi mgbagha C++ dị ugbu a ka ị na-ebupụ ibu ọrụ dị arọ na ụdị nke Rust.

N'ọnọdụ anyị, modul azụmahịa bụ isi na-arụ ọrụ nke ọma na C++ nwere otu eriri ruo ọtụtụ afọ. Ha na-ahazi nhazi ọrụ n'usoro, imepụta akwụkwọ, na ngụkọ ego. Mana ka ntọala onye ọrụ anyị tolitere 100K, anyị chọrọ nhazi data agbakwunyere, njikwa API n'otu oge, yana njikwa steeti enweghị nchekwa. Àgwà Send na Mmekọrịta Rust nyere anyị ohere ịchịkọta oge na-ekwe nkwa na C++ enweghị ike ịnye na-enweghị nyocha akwụkwọ ntuziaka zuru oke.

Ihe mkpali dị mkpa bụ mbelata ihe egwu. Ị na-edobe ihe na-arụ ọrụ, ị na-agbakwụnyekwa ihe akpịrịkpa - na-enweghị ịgba chaa chaa gị dum codebase na njem nke nwere ike ọ gaghị agwụ agwụ.

Kedu ka oke FFI si arụ ọrụ n'ezie?

Ngwaọrụ mba ofesi (FFI) n'etiti C++ na ajari na-arụ ọrụ site na mbinye aka ọrụ dakọtara na C. Rust's mpụ "C" na-egbochi ikpughe ọrụ C++ nwere ike ịkpọ ozugbo, yana ọzọ. Ihe ịma aka dị oke egwu na-apụta mgbe oge ịgba ọsọ ọtụtụ eriri Rust kwesịrị ịkpọku koodu C++ nwere otu eriri n'enweghị nsogbu.

Anyị ji arụ ụlọ raara onwe anyị nye dozie nke a:

  • Executor-string-confined C++ executor: oku C++ niile ka a na-esi n’otu eri raara onwe ya nye site na iji ọwa na-agafe ozi, na-ahụ na ọ dịghị mgbe ọ bụla mebiri emebi nke otu-threaded invariant.
  • Rust async bridge oyi akwa: Ọrụ Tokio na-enyefe ọrụ n'aka onye mmebe C++ yana nsonaazụ echere site na ọwa onehot, na-edobe akụkụ nchara n'ụzọ zuru oke asynchronous.
  • Nhazi ntụaka na-adịghị ahụkebe: A na-ekechi ihe C++ n'ụkpụrụ ajari na-emejuputa Drop maka nchacha nke nchapụta, na-egbochi mgbaze ebe nchekwa gafee oke asụsụ.
  • Serialization na oke: A na-edobe usoro data mgbagwoju anya na FlatBuffers na oyi akwa FFI, na-ezere nhazi nhazi nke na-esighi ike ma na-enye ohere mgbanwe nke akụkụ ọ bụla.
  • Mpụpụ ụjọ: catch_unwind Rust na-ekpuchi ebe ntinye FFI ọ bụla ka ụjọ ghara ịgafe ókèala asụsụ, nke ga-abụ omume enweghị nkọwa.

Ụkpụrụ a nyere anyị ikike nke multi-threaded Rust na ntụkwasị obi nke ezi uche C ++ pụtara — na-enweghị idegharị otu ahịrị nke iwu azụmaahịa mbụ.

Gịnị bụ ọnyà kacha ukwuu a ga-ezere?

Ihe kacha dị ize ndụ bụ mmejọ bụ iche na koodu C++ adịghị mma ma ọ bụrụ na ọ bụghị. Steeti zuru ụwa ọnụ, mgbanwe agbanwe agbanwe, na oku ọbá akwụkwọ anaghị anabataghachi ga-eme ka agbụrụ data nke ndị nchịkọta Rust enweghị ike ịchọpụta n'ofe oke FFI. Nkwenye nchekwa nke Rust na-akwụsị na ngọngọ enweghị nchekwa - ihe niile dị n'ime bụ ọrụ gị.

Nghọta isi: Nchara na-ekwe nkwa nchekwa nchekwa n'ime koodu nke ya, mana ozugbo ị gafere oke FFI banye C++, ị ga-eketa nsogbu nchekwa eri niile nke C++ nwere. Ihe owuwu dị n'akụkụ oke ahụ dị mkpa karịa koodu dị n'akụkụ ọ bụla nke ya.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Ọnyà ọzọ a na-ahụkarị bụ njikwa oge ndụ. Ihe C++ anaghị eso na ihe nrịba ego nke Rust. Ọ bụrụ na Rust tụpụrụ ntụaka mgbe C++ ka na-ejide pointer, ị ga-enweta ahụhụ na-enweghị ihe eji eme ihe nke siri ike ịchọpụta. Anyị lebara nke a anya site n'ịmanye usoro ọmụmụ ihe siri ike nke nwe: A na-enwekarị ihe C++ site na otu nchara nchara, yana ohere nkekọrịta na-aga site na ntinye aka dabere na Arc n'akụkụ nchara.

Arụmọrụ-amamihe, oku FFI gabigara ókè na-emepụta n'elu site na ngbanwe ọnọdụ na nhazi usoro. Anyị na-arụ ọrụ n'ebe ọ bụla o kwere mee, na-ezigara ndị ọrụ C++ ahịrị ihe ọrụ kama ịkpọ oku asụsụ n'otu n'otu.

Olee otú nke a si mee na mmepụta?

Mgbe ebugachara ụlọ ọrụ ngwakọ n'ofe ikpo okwu anyị, anyị tụrụ ihe ndozi. Arịrịọ ntinye aka abawanyela site na 3.4x maka modul ndị kpara akpa na nhazi C++ usoro. Latency ọdụ (p99) gbadara site na 61% n'ihi na oge ịgba ọsọ Rust's async nwere ike hazie arịrịọ onwe ya n'otu oge ebe C++ na-arụ ọrụ mgbako-dị arọ na eri ya raara onwe ya nye.

Nke ka mkpa, anyị enweghị ahụhụ metụtara concurrency na ọnwa isii mbụ nke mmepụta. Usoro njide eri ahụ mere ka ọ bụrụ ihe na-agaghị ekwe omume ịkpọ C++ koodu site na ọtụtụ eri, ebe ụdị usoro Rust gbochiri agbụrụ data n'akụkụ ya. Nke a bụ mmụba dị ịrịba ama karịa ụzọ anyị gara aga nke ịgbalị ịgbakwunye threadi na C++ nwere mutexes, bụ nke mepụtara ọnọdụ ọnọdụ agbụrụ atọ n'ime otu ụzọ n'ụzọ anọ.

Ndị otu injinia kọkwara usoro ntụgharị ọsọ ọsọ. Enwere ike iwulite atụmatụ ọhụrụ na Rust site na nkwado concurrency zuru oke, ebe modul C++ dị adị gara n'ihu na-agba ọsọ na-enweghị mgbanwe. Atụmatụ mmụba a pụtara na ọ dịtụghị mgbe anyị nwere nnukwu ihe ize ndụ maka ịkwaga "nnukwu bang" - na-aga n'ihu, mmụba a na-ahụ anya.

Ajụjụ a na-ajụkarị

Nchara nwere ike ịkpọ ọba akwụkwọ C++ nwere otu eri na-enweghị mgbanwe?

Ee, mana ị ga-ahụrịrị na oku niile a na-aga n'ọbá akwụkwọ ahụ sitere na otu eri. Ụkpụrụ ọkọlọtọ bụ ịmepụta eriri onye mmebe raara onwe ya nye nke na-ahazi oku C++ niile site na ọwa. Ọrụ async nke Rust na-enyefe arịrịọ wee chere nzaghachi na-egbochighị oge ịgba ọsọ multi-threaded. Koodu C++ n'onwe ya achọghị mgbanwe ọ bụla - a na-amanye mmachi nchekwa kpamkpam n'akụkụ nchara.

Nfefe FFI ọ dị oke mkpa iji metụta arụmọrụ ngwa?

Oku FFI n'otu n'otu nwere ntakịrị ihe karịrị - na-adịkarị n'okpuru 10 nanoseconds maka oku ọrụ dị mfe. Agbanyeghị, usoro nhazi data dị mgbagwoju anya yana mmekọrịta eri na oke na-agbakwunye ma ọ bụrụ na ị na-akpọ puku kwuru puku ezigbo oku. Ịrụ ọrụ na iji usoro nnomi oyiri efu dị ka FlatBuffers ma ọ bụ Cap'n Proto na-eme ka ọ bụrụ ihe na-adịghị mma ọbụlagodi n'ogo.

Ànyị kwesịrị idegharị koodu C++ anyị n'ime nchara kama ịmekọrịta ihe?

Maka ọtụtụ ndị otu, mmekọrịta agbakwunyere bụ ụzọ dị nchebe yana ngwa ngwa. Ederede zuru ezu na-ewebata ọnwa nke ihe egwu injinia na-enweghị uru na-eche onye ọrụ ruo mgbe emechara. Interfacing na-enye gị ohere ibuga ndozi ozugbo, kwado usoro nchara na mmepụta, wee kwaga modul otu n'otu oge dabere na ebe concurrency na-enye mmetụta kachasị. Degharịa naanị modul ebe ọnụ ahịa idobe oke FFI karịrị ọnụ ahịa idegharị.


Na Mewayz, anyị na-ewu akụrụngwa na-atụ - ma nke teknụzụ ma na-arụ ọrụ. Azụmaahịa 207-modul anyị OS na-enyere ndị otu 138,000 aka na-arụ ọrụ nke ọma karịa na-amalite na $19 / ọnwa. Ma ị na-ejikwa ọrụ, na-arụ ọrụ akpaaka, ma ọ bụ na-emeziwanye azụmahịa gị, Mewayz na-adaba n'ụzọ ị na-arụ ọrụ. Bido nnwale gị n'efu na app.mewayz.com wee hụ ihe OS azụmahịa ọgbara ọhụrụ nwere ike imere otu gị.