Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existují důsledky výkonu při použití getAllValues ​​() přes getValue ()


Existují důsledky výkonu při použití getAllValues ​​() přes getValue ()


Při porovnání `getAllValues ​​()` do `getValue ()` závisí dopady do značné míry na kontextu a na konkrétní implementaci těchto metod v systému nebo rámci, který používáte. Naše porozumění však mohou vést některé obecné principy:

Obecné úvahy o výkonu

1. Počet hovorů: Obecně je méně hovorů k načtení dat efektivnější než více hovorů. Pokud `getAllValues ​​()` načte všechna potřebná data v jednom hovoru, může to být efektivnější než volání `getValue ()` několikrát pro každou hodnotu.

2. Získání dat: Pokud `getAllValues ​​()` načte více dat, než je potřeba, může být potenciálně pomalejší kvůli zvýšenému přenosu a zpracování dat. Pokud však stejně potřebujete všechny hodnoty, je pravděpodobně efektivnější je načíst všechny najednou než jednotlivě.

3.. Ukládání do mezipaměti a optimalizace: Některé systémy mohou výsledky mezipaměti nebo optimalizovat opakovaná volání na `getValue ()`, což by mohlo zmírnit rozdíly v výkonu. Pokud je však pro hromadné vyhledávání optimalizováno „getAllValues ​​()“, může to stále nabízet lepší výkon.

Specifické scénáře

- Google Apps Script: Ve skriptu Google Apps skript, použití `getValues ​​()` (podobně jako `getAllValues ​​()`) se obecně doporučuje přes více „getValue ()“ hovorů, protože snižuje počet interakcí s API Google Sheets API, což může výrazně zlepšit výkon [3].

- Reflexe a přístup k vlastnictví: In .NET Reflexe, metody jako `getProperties ()` mohou být pomalé kvůli režii samotného odrazu. Výsledky ukládání do mezipaměti však mohou dramaticky zlepšit výkon [1] [7].

- ServiceNow: Ve ServiceNow, `getValue ()` je obecně rychlejší než `getDisplayValue ()`, protože získává surovou hodnotu bez dalšího zpracování [5].

Závěr

Volba mezi `getAllValues ​​()` a `getValue ()` by měla být založena na specifických požadavcích vaší aplikace a výkonu charakteristik systému, se kterým pracujete. Pokud potřebujete všechny hodnoty a můžete je efektivně načíst pomocí `getAllValues ​​()`, je to pravděpodobně lepší volba. Pokud však potřebujete pouze podmnožinu hodnot nebo pokud je pro váš případ použití optimalizován `getValue ()`, může to být lepší. Při tomto rozhodnutí vždy zvažte faktory, jako je velikost dat, latence sítě a optimalizace specifické pro systém.

Citace:
[1] https://lotsacode.wordpress.com/2010/04/13/reflection-type-getProperties-and-Performance/
[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-return-pouze-the-first-hodnota
[5] https://www.servicenow.com/community/in-other-news/how-to-use-getDisplayValue-and-getValue-for-liderecord-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-grid.com/angular-data-rid/component-cell-creder/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getValues-custom-setting