Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar yra kokių nors rezultatų, susijusių su rungtynėmis


Ar yra kokių nors rezultatų, susijusių su rungtynėmis


Palyginus „Matchers“ ir „RAW“ verčių naudojimo našumo padarinius, atsiranda keli veiksniai, atsižvelgiant į kontekstą, kuriame jie naudojami. Čia yra išsamus suskirstymas:

Apskritai programavimas

Programavimo metu atitikmenys dažnai naudojami bandymo sistemose, tokiose kaip „Mockito“ ar „Googletest“, kad būtų galima pateikti tvirtinimus ar kibirkščių metodus. Naudojant „Matchers“, visus argumentus turi pateikti „Mockito“, kad būtų išvengta klaidų, tokių kaip „invaliduseOfMatcherSexception“ [5] [8]. Šis reikalavimas gali sukelti šiek tiek daugiau pridėtinių išlaidų dėl papildomų funkcijų skambučių, palyginti su tiesiogiai naudojant neapdorotas vertes.

Tačiau našumo skirtumas paprastai būna nereikšmingas, nebent jūs kalbate apie labai daug skambučių arba atlikdami kritines kodo skyrius. Daugeliu atvejų „Matchers“ teikiamas skaitomumas ir lankstumas viršija visas nedideles veiklos išlaidas.

Paieškos ir atitikimo operacijose

Scenarijuose, apimančiuose paieškos operacijas, tokias kaip rūdžių „Match“ išraiškos, palyginti su paieškos lentelėmis, našumas gali skirtis atsižvelgiant į keletą veiksnių:

- Šakos prognozė: „Match“ išraiškos gali būti greitesnės, jei šakos prognozė veikia gerai, tai reiškia, kad CPU gali tiksliai numatyti, kuri šaka bus paimta toliau. Tačiau jei modelis yra atsitiktinis, paieškos lentelė gali būti greitesnė, nes ji išvengia šakų prognozavimo gedimų [3] [6].

- Įkalbinimas ir talpykla: Paieškos lentelės gali būti greitesnės, kai jie yra tinkamai įkišti ir talpykloje, ypač didesniems duomenų rinkiniams. Tačiau „atitikimo“ išraiškos paprastai sukuria mažiau instrukcijų ir gali būti greitesnė, nebent įvedimas sukelia mikroarchitekto pavojų [3] [6].

įprastomis išraiškomis ir modelio suderinimu

Kai modelių suderinimui naudojamas įprastas išraiškas (regex), našumui gali didelę įtaką paveikti regex sudėtingumas ir apdorojamų duomenų dydis. Nors „Regex“ yra galingas ir lankstus, pernelyg sudėtingi modeliai gali sukelti lėtesnį našumą dėl nugaros ir kitų pridėtinių išlaidų [9].

Atvirkščiai, paprasti palyginimai, priešingai, naudojant neapdorotus vertes ar paprastesnius atitikimo mechanizmus, gali būti greitesnis, tačiau jame nėra „Regex“ lankstumo ir išraiškingumo.

stebėjimo ir duomenų sistemose

Sistemose, susijusiose su aukšto kardinalumo duomenimis (pvz., Žurnalais, metrika, pėdsakais), naudojant atitikmenis ar sudėtingas užklausas, gali kilti našumo problemų. Aukštas kardinalumas reiškia daugybę unikalių verčių, kurios gali užvaldyti sistemas, skirtas efektyviai saugoti ir gauti duomenis [1]. Tokiais atvejais užklausų optimizavimas ar efektyvesnių duomenų struktūrų naudojimas gali sušvelninti našumo poveikį.

Apibendrinant galima pasakyti, kad nors atitikmenys ir sudėtingi atitikimo mechanizmai siūlo lankstumą ir skaitomumą, jie gali įvesti nedideles našumo pridėtines išlaidas, palyginti su tiesiogiai naudojant neapdorotas vertes. Tačiau šios pridėtinės išlaidos paprastai būna nereikšmingos, nebent atliekant kritinius kodo skyrius arba susiduriant su labai dideliais duomenų rinkiniais. Pasirinkimas tarp rungtynių ir neapdorotų verčių turėtų būti grindžiamas konkrečiais programos reikalavimais, įskaitant skaitomumą, prižiūrimą ir našumo poreikius.

Citatos:
[1] https://last9.io/blog/high-vs-low-cardinality/
[2] https://stats.Stackexchange.com/questions/651015/use-smd-or- raw-difference-in-proportions-when comparing-pusiausvyros-binarinis kovas
[3] https://users.rust-lang.org/t/why-is-a-lookup-table- Faster-Than-a-match-expression/24233
[4] https://docs.splunk.com/documentation/scs/current/searchreference/conditionalFunctions
[5] https://zsoltfabok.com/blog/2010/08/jmock-versus-mockito/
[6] https://kevinlynagh.com/notes/match-vs-lookup/
[7] https://docs.vespa.ai/en/reference/schema-reference.html
[8] https://www.digitalocean.com/community/tutorials/mockito-argument-matchers-Ant-EQ
[9] https://newrelic.com/blog/how-to-trelic/extracting-gog-data-with-regex
[10] http://google.github.io/googletest/reference/matchers.html