Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Există implicații de performanță atunci când utilizați GetAllValues ​​() peste GetValue ()


Există implicații de performanță atunci când utilizați GetAllValues ​​() peste GetValue ()


Atunci când comparați `getAllValues ​​()` cu `getValue ()`, implicațiile de performanță depind în mare măsură de context și de implementarea specifică a acestor metode în sistemul sau cadrul pe care îl utilizați. Cu toate acestea, există câteva principii generale care ne pot ghida înțelegerea:

Considerații generale privind performanța

1. Numărul de apeluri: În general, efectuarea de mai puține apeluri pentru a prelua datele este mai eficientă decât efectuarea mai multor apeluri. Dacă `getAllValues ​​()` preia toate datele necesare într -un singur apel, ar putea fi mai eficient decât apelarea `getValue ()` de mai multe ori pentru fiecare valoare.

2. Recuperarea datelor: Dacă `GetAllValues ​​()` preia mai multe date decât este necesar, ar putea fi mai lent din cauza creșterii transferului și procesării de date. Cu toate acestea, dacă aveți nevoie de toate valorile oricum, este probabil mai eficient să le obțineți pe toate simultan, mai degrabă decât individual.

3. Caching și optimizare: Unele sisteme pot cache rezultatele sau pot optimiza apelurile repetate la `getValue ()`, care ar putea atenua diferențele de performanță. Cu toate acestea, dacă `GetAllValues ​​()` este optimizat pentru regăsirea în vrac, s -ar putea să ofere totuși performanțe mai bune.

Scenarii specifice

- Script Google Apps: În scriptul Google Apps, folosind `getValues ​​()` (similar cu `getAllValues ​​()`) este, în general, recomandat pe mai multe apeluri `getValue (), deoarece reduce numărul de interacțiuni cu API -ul Google Sheets, care poate îmbunătăți semnificativ performanța [3].

- Reflecție și acces la proprietate: în .NET Reflection, metode precum `getProperties ()` pot fi lente din cauza aerului reflecției în sine. Cu toate acestea, rezultatele în cache pot îmbunătăți dramatic performanța [1] [7].

- ServiceNow: În ServiceNow, `getValue ()` este în general mai rapid decât `getDisplayValue ()` deoarece preia valoarea brută fără prelucrare suplimentară [5].

Concluzie

Alegerea dintre `getAllValues ​​()` și `getValue ()` ar trebui să se bazeze pe cerințele specifice ale aplicației dvs. și pe caracteristicile de performanță ale sistemului cu care lucrați. Dacă aveți nevoie de toate valorile și le puteți prelua eficient cu `getAllValues ​​()`, este probabil ca alegerea mai bună. Cu toate acestea, dacă aveți nevoie doar de un subset de valori sau dacă `getValue () este optimizat pentru cazul dvs. de utilizare, ar putea fi de preferat. Luați în considerare întotdeauna factori precum dimensiunea datelor, latența rețelei și optimizările specifice sistemului atunci când luați această decizie.

Citări:
[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-field-return-only-the-first-valoare
[5] https://www.servicenow.com/community/in-other-news/how-to-use-getdisplayvalue-and-getvalue-for-giderecord-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-render/
[9] https://salesforce.stackexchange.com/questions/8829/getInstance-vs-getvalues-custom-setting