Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ci sono implicazioni sulle prestazioni quando si utilizzano getAllValues ​​() su getValue ()


Ci sono implicazioni sulle prestazioni quando si utilizzano getAllValues ​​() su getValue ()


Quando si confrontano `getAllValues ​​()` a `getValue ()`, le implicazioni delle prestazioni dipendono in gran parte dal contesto e dall'implementazione specifica di questi metodi nel sistema o nel framework che si sta utilizzando. Tuttavia, ci sono alcuni principi generali che possono guidare la nostra comprensione:

Considerazioni su prestazioni generali

1. Numero di chiamate: in generale, effettuare meno chiamate per recuperare i dati è più efficiente che effettuare più chiamate. Se `getAllValues ​​()` recupera tutti i dati necessari in una chiamata, potrebbe essere più efficiente che chiamare `getValue ()` più volte per ogni valore.

2. Recupero dei dati: se `getAllValues ​​()` recupera più dati del necessario, potrebbe essere potenzialmente più lento a causa dell'aumento del trasferimento e dell'elaborazione dei dati. Tuttavia, se hai comunque bisogno di tutti i valori, è probabilmente più efficiente prenderli tutti in una volta piuttosto che individualmente.

3. Cacheggio e ottimizzazione: alcuni sistemi possono memorizzare nella cache dei risultati o ottimizzare le chiamate ripetute a `getValue ()`, che potrebbero mitigare le differenze di prestazione. Tuttavia, se `getAllValues ​​()` è ottimizzato per il recupero di massa, potrebbe comunque offrire prestazioni migliori.

scenari specifici

- Script di Google Apps: nello script di Google Apps, utilizzando `getValues ​​()` (Simile a `getAllValues ​​()`) è generalmente raccomandato su più chiamate `getValue ()` perché riduce il numero di interazioni con l'API di Google Sheets, che può migliorare significativamente le prestazioni [3].

- Riflessione e accesso alla proprietà: nella riflessione .NET, metodi come `getProperties ()` possono essere lenti a causa del sovraccarico della stessa riflessione. Tuttavia, i risultati della memorizzazione nella cache possono migliorare notevolmente le prestazioni [1] [7].

- ServiceNow: in ServiceNow, `getValue ()` è generalmente più veloce di `getDisplayValue ()` perché recupera il valore grezzo senza ulteriore elaborazione [5].

Conclusione

La scelta tra `getAllValues ​​()` e `getValue ()` dovrebbe essere basata sui requisiti specifici dell'applicazione e sulle caratteristiche delle prestazioni del sistema con cui si lavora. Se hai bisogno di tutti i valori e puoi recuperarli in modo efficiente con `getAllValues ​​()`, è probabilmente la scelta migliore. Tuttavia, se è necessario solo un sottoinsieme di valori o se `getValue ()` è ottimizzato per il caso d'uso, potrebbe essere preferibile. Considera sempre fattori come la dimensione dei dati, la latenza di rete e le ottimizzazioni specifiche del sistema durante la decisione.

Citazioni:
[1] https://lotsacode.wordpress.com/2010/04/13/reflection-type-getproperties-and-performance/
[2] https://www.reddit.com/r/googleappsscript/comments/px959t/getrangegegetvalues_performance_implication_when/
[3] https://stackoverflow.com/questions/42776311/optimizing-code-getvalue-and-looping
[4] https://drupal.stackexchange.com/questions/214036/getvalue-oof-multleple-values-field-return-only-the-first-value
[5] https://www.servicenow.com/community/in-other-news/how-to-use-getdisplayvalue-and-getvalue-for-glidecord-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-grid/component-cell-renderer/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom-setting