Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kas on olemas jõudluse tagajärgi, kui nad kasutavad matšide töötlemata väärtuste üle


Kas on olemas jõudluse tagajärgi, kui nad kasutavad matšide töötlemata väärtuste üle


Kui võrrelda matšide kasutamise ja töötlemata väärtuste jõudluse mõju, tulevad mängu mitmed tegurid, sõltuvalt nende kasutamise kontekstist. Siin on üksikasjalik jaotus:

Üldiselt programmeerimine

Programmeerimisel kasutatakse sobivate raamistikute nagu Mockito või Googlesti testimisvõimalusi sageli väidete või tükimeetodite testimisel. Matšide kasutamisel peavad kõik vasterid esitama, et vältida selliseid vigu nagu Mockitos invaliduseofMatcherSexception "[5] [8]. See nõue võib põhjustada lisafunktsioonikõnede tõttu pisut rohkem üldkulusid, võrreldes töötlemata väärtuste otse kasutamisega.

Kuid jõudluse erinevus on tavaliselt tühine, kui te ei tegele väga suure hulga kõnede või tulemuslikkuse kriitiliste koodisektsioonidega. Enamikul juhtudel kaaluvad matšide pakutav loetavus ja paindlikkus üles kõik väiksemad tulemuskulud.

otsingu- ja sobitamisoperatsioonides

Otsingutoiminguid hõlmavad stsenaariumid, näiteks Rusti "Match" väljendite versus otsingutabelid, võib jõudlus varieeruda mitmete tegurite põhjal:

- Filiaali ennustamine: "Vastavad väljendid võivad olla kiiremad, kui haru ennustamine hästi töötab, mis tähendab, et CPU suudab täpselt ennustada, milline haru järgmisena võetakse. Kui muster on juhuslik, võib otsingulaud olla kiirem, kuna see väldib haru prognoosimise ebaõnnestumisi [3] [6].

- Inlinating ja vahemälu: otsingutabelid võivad korralikult sisse ja vahemällu salvestada, eriti suuremate andmekogumite puhul. Kuid "vaste" avaldised loovad üldiselt vähem juhiseid ja need võivad olla kiirem, kui sisestamine põhjustab mikroarhitektuurilisi ohte [3] [6].

regulaarse väljenduse ja mustri sobitamise korral

Regulaarsete avaldiste (regex) kasutamisel mustri sobitamiseks võib jõudlust märkimisväärselt mõjutada regexi keerukus ja töödeldavate andmete suurus. Kuigi Regex on võimas ja paindlik, võivad liiga keerulised mustrid tagantjärele ja muude üldkulude tõttu põhjustada aeglasemat jõudlust [9].

Seevastu töötlemata väärtuste või lihtsamate sobitamismehhanismide kasutamine võib olla sirgjooneliste võrdluste jaoks kiirem, kuid sellel puudub regexi paindlikkus ja ekspressiivsus.

Jälgitavuse ja andmesüsteemide alal

Süsteemides, mis käsitlevad kõrge kardinaalsusega andmeid (nt logid, mõõdikud, jäljed), võivad matšide või keerukate päringute kasutamine põhjustada jõudlusprobleeme. Kõrge kardinaalsus viitab suurele hulgale ainulaadsete väärtustele, mis võib ületada süsteeme, mis on loodud tõhusaks andmete salvestamiseks ja otsimiseks [1]. Sellistel juhtudel võib päringute optimeerimine või tõhusamate andmestruktuuride kasutamine leevendada jõudluse mõju.

Kokkuvõtlikult võib öelda, et kuigi sobitajad ja keerulised sobitamismehhanismid pakuvad paindlikkust ja loetavust, saavad nad toorväärtuste otse kasutamisega võrreldes väikeseid jõudlust. Kuid need üldkulud on tavaliselt tühine, välja arvatud juhul, kui tulemuslikkukriitilistes koodisektsioonides või väga suurte andmekogumitega tegeledes. Kohtujate ja töötlemata väärtuste valik peaks põhinema rakenduse erinõuetel, sealhulgas loetavuse, hooldatavuse ja jõudlusvajaduste põhjal.

Tsitaadid:
[1] https://last9.io/blog/high-vs-low-cardinality/
]
]
[4] https://docs.splunk.com/documentation/scs/current/searchReference/ConditionAlftions
[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
]
[9] https://newrelic.com/blog/how-to-realic/excting-log-data-with-regex
[10] http://google.github.io/googlest/reference/matchers.html