Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Onko vastaajien käytön suorituskyvyn vaikutuksia raaka -arvoihin


Onko vastaajien käytön suorituskyvyn vaikutuksia raaka -arvoihin


Kun verrataan sovittajien käytön suorituskykyä koskevia vaikutuksia raaka -arvoihin verrattuna, useita tekijöitä tulee peliin riippuen tilanteesta, jossa niitä käytetään. Tässä on yksityiskohtainen erittely:

Yleisesti ohjelmointi

Ohjelmoinnissa ottelijoita käytetään usein kehysten, kuten Mockito tai Googleest, testaamiseen väitteiden tai tynkämenetelmien tekemiseen. Ottelijoita käytettäessä ottelijoiden on annettava kaikki argumentit, jotta vältetään virheet, kuten `InfliduseOfMatchersException`, Mockito [5] [8]. Tämä vaatimus voi johtaa hieman enemmän yleiskustannuksiin lisätoimintopuheluiden vuoksi, kun RAW -arvot käyttävät suoraan.

Suorituskykyero on kuitenkin tyypillisesti vähäinen, ellet ole tekemisissä erittäin suurta määrää puheluita tai suorituskriittisissä koodiosissa. Useimmissa tapauksissa sovittajien tarjoama luettavuus ja joustavuus ovat suuremmat kuin pienet suorituskykykustannukset.

haku- ja sovitusoperaatioissa

Skenaarioissa, joissa on hakutoimenpiteitä, kuten Rustin "ottelu" -ilmaisuissa verrattuna hakutaulukoihin, suorituskyky voi vaihdella useiden tekijöiden perusteella:

- Haaran ennustaminen: `Match` -lausekkeet voivat olla nopeampia, jos haaran ennuste toimii hyvin, mikä tarkoittaa, että suorittimen avulla voidaan tarkasti ennustaa, mikä haara otetaan seuraavaksi. Jos malli on satunnainen, hakutaulukko saattaa kuitenkin olla nopeampi, koska se välttää haaran ennustevirheet [3] [6].

- Sisääntö ja välimuisti: Hakupöydät voivat olla nopeampia, kun se on syötetty ja välimuisti oikein, etenkin suurempien tietojoukkojen osalta. Kuitenkin "vastaa" lausekkeet aiheuttavat yleensä vähemmän ohjeita ja voivat olla nopeampia, ellei sisältäminen aiheuta mikroarkkitehtuurisia vaaroja [3] [6].

Säännöllisissä lausekkeissa ja kuvioiden sovituksissa

Kun käytetään säännöllisiä lausekkeita (regex) kuvioiden sovittamiseen, regexin monimutkaisuus ja prosessoitujen tietojen monimutkaisuus voi vaikuttaa merkittävästi suorituskykyyn. Vaikka Regex on voimakas ja joustava, liian monimutkaiset kuviot voivat johtaa hitaampaan suorituskykyyn takaosan ja muiden yläpuolella olevien etujen takia [9].

Sitä vastoin RAW -arvojen tai yksinkertaisempien sovitusmekanismien käyttäminen voi olla nopeampaa suoraviivaisten vertailujen suhteen, mutta puuttuu regexin joustavuus ja ilmaisu.

havaittavissa ja tietojärjestelmissä

Järjestelmissä, jotka käsittelevät korkeaa kardinaalisuustietoja (esim. Lokit, mittarit, jäljet), sovittajien tai monimutkaisten kyselyjen avulla voi johtaa suorituskykyongelmiin. Suuri kardinaalisuus viittaa suureen määrään ainutlaatuisia arvoja, jotka voivat ylikuormittaa järjestelmiä, jotka on suunniteltu tehokkaaseen tietojen tallentamiseen ja hakemiseen [1]. Tällaisissa tapauksissa kyselyjen optimointi tai tehokkaampien tietorakenteiden käyttäminen voi lieventää suorituskykyvaikutuksia.

Yhteenvetona voidaan todeta, että vaikka sovittajat ja monimutkaiset sovitusmekanismit tarjoavat joustavuutta ja luettavuutta, ne voivat ottaa käyttöön pieniä suorituskyvyn yleiskustannuksia verrattuna raaka -arvojen käyttämiseen suoraan. Nämä yleiskustannukset ovat kuitenkin yleensä vähäisiä, ellei suorituskriittisissä koodiosissa tai käsitellessään erittäin suuria tietojoukkoja. Valinta sovittajien ja RAW -arvojen välillä tulisi perustua sovelluksen erityisvaatimuksiin, mukaan lukien luettavuus, ylläpidettävyys ja suorituskykytarpeet.

Viittaukset:
[1] https://last9.io/blog/high-vs-low-cardinality/
.
.
[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-any-eq
[9] https://newrelic.com/blog/how-to-relic/extracting-log-data-with-regex
[10] http://google.github.io/googletest/reference/matchers.html