Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ali obstajajo posledice za delovanje pri uporabi getAllValues ​​() nad getValue ()


Ali obstajajo posledice za delovanje pri uporabi getAllValues ​​() nad getValue ()


Če primerjamo `getAllValues ​​()` z `getValue ()`, so posledice uspešnosti v veliki meri odvisne od konteksta in posebne izvajanja teh metod v sistemu ali okviru, ki ga uporabljate. Vendar pa obstaja nekaj splošnih načel, ki lahko vodijo naše razumevanje:

Splošni premisleki o uspešnosti

1. Število klicev: Na splošno je manj klicev za pridobivanje podatkov učinkovitejše od klicanja več klicev. Če `getAllValues ​​()` pridobi vse potrebne podatke v enem klicu, bi bilo morda učinkovitejše, kot če bi za vsako vrednost poklicali `getValue ()` večkrat.

2. Pridobivanje podatkov: Če `getAllValues ​​()` pridobi več podatkov, kot je potrebno, bi lahko bil zaradi povečanega prenosa in obdelave podatkov počasnejši. Če pa vseeno potrebujete vse vrednosti, je verjetno bolj učinkovito, da jih vse naenkrat pridobite in ne posamezno.

3. Prenašanje in optimizacija: Nekateri sistemi lahko predpomnijo rezultate ali optimizirajo večkratne klice na `getValue ()`, kar bi lahko ublažilo razlike v uspešnosti. Če pa je `GetAllValues ​​()` optimiziran za iskanje v velikem obsegu, bi morda še vedno ponudil boljše zmogljivosti.

Specifični scenariji

- Skript Google Apps: V skriptu Google Apps z uporabo `getValues ​​()` (podobno kot `getAllValues ​​()`) je na splošno priporočljivo pri več klicih `getValue ()`, ker zmanjšuje število interakcij z API -jem Google Sheets, kar lahko znatno izboljša uspešnost [3].

- Razmislek in dostop do lastnosti: V .NET odsevu so lahko metode, kot je `getProperties ()`, počasne zaradi režijske refleksije. Vendar lahko rezultati predpomnjenja drastično izboljšajo delovanje [1] [7].

- ServiceNow: V ServiceNow je `getValue ()` na splošno hitrejši od `getDisplayValue ()`, ker pridobi surovo vrednost brez dodatne obdelave [5].

Zaključek

Izbira med `getAllValues ​​()` in `getValue ()` bi morala temeljiti na posebnih zahtevah vaše aplikacije in lastnosti zmogljivosti sistema, s katerim delate. Če potrebujete vse vrednosti in jih lahko učinkovito pridobite z `getAllValues ​​()`, je verjetno boljša izbira. Če pa potrebujete samo podskupino vrednosti ali če je `getValue ()` optimiziran za vaš primer uporabe, je to morda zaželeno. Pri tej odločitvi vedno upoštevajte dejavnike, kot so velikost podatkov, zakasnitev omrežja in sistemske optimizacije, specifične za sistem.

Navedbe:
[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-mof-moftiple-vield-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_port/api_reference/glideform/concept/c_glideformapi.html
[7] http://www.mattwarren.org/2016/12/14/why-is-reflection-slow/
[8] https://www.ag-rid.com/angular-nata-rid/component-cell-rener/
[9] https://salesforce.stackexchange.com/questions/8829/getInstance-vs-getValues-custom-setting