Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Er det ytelsesimplikasjoner når du bruker getAllValues ​​() over getValue ()


Er det ytelsesimplikasjoner når du bruker getAllValues ​​() over getValue ()


Når du sammenligner `getAllValues ​​()` til `getValue ()`, avhenger ytelsesimplikasjonene i stor grad av konteksten og den spesifikke implementeringen av disse metodene i systemet eller rammeverket du bruker. Imidlertid er det noen generelle prinsipper som kan veilede vår forståelse:

Generelle ytelseshensyn

1. Antall samtaler: Generelt er det mer effektivt å ringe færre samtaler for å hente data enn å ringe flere samtaler. Hvis `getAllValues ​​()` henter alle nødvendige data i en samtale, kan det være mer effektivt enn å kalle `getValue ()` flere ganger for hver verdi.

2. Datainnhenting: Hvis `getAllValues ​​()` henter mer data enn nødvendig, kan det potensielt være tregere på grunn av økt dataoverføring og behandling. Imidlertid, hvis du uansett trenger alle verdiene, er det sannsynligvis mer effektivt å hente dem alle på en gang i stedet for individuelt.

3. Cache og optimalisering: Noen systemer kan cache resultater eller optimalisere gjentatte anrop til `getValue ()`, noe som kan dempe ytelsesforskjeller. Imidlertid, hvis `getAllValues ​​()` er optimalisert for henting av bulk, kan det fremdeles gi bedre ytelse.

Spesifikke scenarier

- Google Apps -skript: I Google Apps -skript er det generelt anbefalt å bruke "getValues ​​()" (lignende på "getAllValues ​​()`)) over flere `getValue ()` anrop fordi det reduserer antallet interaksjoner med Google Sheets API, som betydelig kan forbedre ytelsen [3].

- Refleksjon og egenskapstilgang: I .NET -refleksjon kan metoder som `getProperties ()` være treg på grunn av selve refleksjonen. Imidlertid kan cache -resultater dramatisk forbedre ytelsen [1] [7].

- ServiceNow: I ServiceNow er `getValue ()` generelt raskere enn `getDisplayValue ()` fordi den henter råverdien uten ekstra prosessering [5].

Konklusjon

Valget mellom `getAllValues ​​()` og `getValue ()` bør være basert på de spesifikke kravene til applikasjonen din og ytelsesegenskapene til systemet du jobber med. Hvis du trenger alle verdier og kan hente dem effektivt med `getAllValues ​​()`, er det sannsynligvis det bedre valget. Imidlertid, hvis du bare trenger en delmengde av verdier eller hvis `getValue ()` er optimalisert for brukssaken din, kan det være å foretrekke. Vurder alltid faktorer som datastørrelse, nettverksforsinkelse og systemspesifikke optimaliseringer når du tar denne beslutningen.

Sitasjoner:
[1] https://lotsacode.wordpress.com/2010/04/13/reflection-type-getproperties-andformance/
[2] https://www.reddit.com/r/googleappsscript/comments/px959t/getrangeGetValues_performance_implication_when/
[3] https://stackoverflow.com/questions/42776311/optimizing-code-getvalue-and-looping
[4] https://drupal.stackexchange.com/questions/214036/getvalue-of-multiple-values-field-turn-ty-the-first-verdi
[5] https://www.servicenow.com/community/in-ther-news/how-to-use-etdisplayvalue-and-getvalue-for-gliderecord-or/ba-p/2896719
[6] https://www.servicenow.com/docs/bundle/yokohama-api-reference/page/app-store/dev_portal/api_reference/glideform/concept/c_glideformapi.html
[7] http://www.mattwarren.org/2016/12/14/why-is-reflection-slow/
[8] https://www.ag-nid.com/angular-data-nid/component-cell-renderer/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom-sting