Salīdzinot `getallValues ()` ar `getValue ()`, veiktspējas ietekme lielā mērā ir atkarīga no konteksta un šo metožu īpašās ieviešanas sistēmā vai ietvarā, kuru izmantojat. Tomēr ir daži vispārīgi principi, kas var vadīt mūsu izpratni:
Vispārīgi darbības apsvērumi
1. Zvanu skaits: Parasti mazāk zvanu, lai iegūtu datus, ir efektīvāks nekā vairāku zvanu veikšana. Ja `getAllValues ()` Iegūst visus nepieciešamos datus vienā zvanā, tas varētu būt efektīvāks nekā zvana `getValue ()` vairākas reizes katrai vērtībai.
2. Datu iegūšana: ja `getallValues ()` iegūst vairāk datu, nekā nepieciešams, tas varētu būt lēnāks, jo palielinās datu pārsūtīšana un apstrāde. Tomēr, ja jums jebkurā gadījumā ir vajadzīgas visas vērtības, iespējams, ir efektīvāk tos visus atnest uzreiz, nevis individuāli.
3. Kešatmiņa un optimizācija: Dažas sistēmas var kešatmiņas rezultātus vai optimizēt atkārtotus zvanus uz “getValue ()”, kas varētu mazināt veiktspējas atšķirības. Tomēr, ja `getallvalues ()` tiek optimizēts lielapjoma iegūšanai, tas joprojām varētu piedāvāt labāku sniegumu.
Konkrēti scenāriji
- Google lietotņu skripts: Google lietotņu skripts, izmantojot `getValues ()` (līdzīgi kā `getAllValues ()`) parasti ieteicams vairākos “getValue () zvanos, jo tas samazina mijiedarbības skaitu ar Google Sheets API, kas var ievērojami uzlabot veiktspēju [3].
- Pārdomu un īpašuma piekļuve: .NET refleksijā tādas metodes kā `getProperties ()` var būt lēnas pašas pārdomu virs galvas. Tomēr kešatmiņas saglabāšanas rezultāti var dramatiski uzlabot veiktspēju [1] [7].
- ServiceNow: ServiceNow `getValue ()` parasti ir ātrāks nekā `getDisplayValue ()` jo tas izgūst neapstrādātu vērtību bez papildu apstrādes [5].
Secinājums
Izvēlei starp `getAllValues ()` un `getValue ()` jābalstās uz jūsu lietojumprogrammas īpašajām prasībām un sistēmas veiktspējas īpašībām, ar kuru jūs strādājat. Ja jums ir vajadzīgas visas vērtības un varat tās efektīvi izgūt ar `getallvalues ()`, tā, iespējams, ir labāka izvēle. Tomēr, ja jums ir nepieciešama tikai vērtību apakškopa vai ja `getValue ()` ir optimizēts jūsu lietošanas gadījumā, tas varētu būt vēlams. Pieņemot šo lēmumu, vienmēr ņemiet vērā tādus faktorus kā datu lielums, tīkla latentums un sistēmai raksturīga optimizācija.
Atsauces:[1] https://lotsacode.wordpress.com/2010/04/13/reflection-type-getproperties-and-performance/
[2] https://www.reddit.com/r/googleappsssscript/comments/px959t/getrangegetvalues_performance_implication_when/
[3] https://stackoverflow.com/questions/42776311/optimizing-code-getvalue-and-stuming
.
.
[6.]
[7] http://www.mattwarren.org/2016/12/14/why-is-reflection-low/
[8] https://www.ag-grid.com/angular-data-grid/component-cell-rederer/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom