Pri porovnaní `getAllValues ()` s `getValue ()` implikácie výkonu do značnej miery závisia od kontextu a špecifickej implementácie týchto metód v systéme alebo rámci, ktorý používate. Existujú však niektoré všeobecné zásady, ktoré môžu viesť naše porozumenie:
Všeobecné úvahy o výkone
1. Počet hovorov: Všeobecne platí, že uskutočnenie menej hovorov na načítanie údajov je efektívnejšie ako uskutočnenie viacerých hovorov. Ak `getAllValues ()` načíta všetky potrebné údaje v jednom volaní, môže to byť efektívnejšie ako volanie `getValue ()` viackrát pre každú hodnotu.
2. Získanie údajov: Ak `getAllValues ()` načíta viac údajov, ako je potrebné, mohlo by to byť potenciálne pomalšie v dôsledku zvýšeného prenosu a spracovania údajov. Ak však napriek tomu potrebujete všetky hodnoty, je pravdepodobné, že ich načítajte všetky naraz, než individuálne.
3. Caching a optimalizácia: Niektoré systémy môžu výsledky vyrovnávacej pamäte alebo optimalizovať opakované hovory na `getValue ()`, čo by mohlo zmierniť rozdiely v výkonnosti. Ak je však `getAllValues ()` optimalizovaný pre hromadné získavanie, môže to stále ponúknuť lepší výkon.
Konkrétne scenáre
- Skript aplikácie Google Apps: V skripte Google Apps sa používa pomocou `getValues ()` (podobné ako `getAllValues ()`) všeobecne odporúča počas viacerých `getValue ()` hovory, pretože znižuje počet interakcií s rozhraním API Google Sheets, ktoré môžu významne zlepšiť výkon [3].
- Reflexia a prístup k majetku: V reflexii .NET môžu byť metódy ako `getProperties ()` pomalé v dôsledku samotnej reflexie. Výsledky ukladania do vyrovnávacej pamäte však môžu dramaticky zlepšiť výkon [1] [7].
- ServiceNow: V ServiceNow, `getValue ()` je vo všeobecnosti rýchlejší ako `getDisplayValue ()`, pretože načíta surovú hodnotu bez ďalšieho spracovania [5].
Záver
Výber medzi `getAllValues ()` a `getValue ()` by mal byť založený na konkrétnych požiadavkách vašej aplikácie a výkonnostných charakteristík systému, s ktorým pracujete. Ak potrebujete všetky hodnoty a môžete ich efektívne získať pomocou `getAllValues ()`, je pravdepodobné, že je to lepšia voľba. Ak však potrebujete iba podskupinu hodnôt alebo ak je `getValue ()` optimalizovaný pre váš prípad použitia, môže to byť výhodné. Pri prijímaní tohto rozhodnutia vždy zvážte faktory, ako je veľkosť údajov, latencia siete a optimalizácia špecifické pre systém.
Citácie:[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/optimization-code-getValue-and-looping
[4] https://drupal.stackexchange.com/questions/214036/getValue-of-multiple-values-field-return-return-return
[5] https://www.servicenow.com/community/in-Other-news/how-to-use-getDisplay-plaue-and-getvalue-for-griderecord-orcord-or/ba-p/2896719
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-grid/component-cell-redener/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getValues-Custom-setting