Palyginus „getAllValues ()` su `getValue ()“, poveikis našumui daugiausia priklauso nuo konteksto ir konkretaus šių metodų įgyvendinimo sistemoje ar sistemoje, kurią naudojate. Tačiau yra keletas bendrųjų principų, kurie gali padėti mūsų supratimą:
Bendrosios veiklos aspektai
1. Skambučių skaičius: Paprastai skambučiai gauti mažiau skambučių gauti duomenis yra efektyviau nei skambinti keliais skambučiais. Jei „getAllValues“ () `gaunami visi būtini duomenys viename skambutyje, tai gali būti efektyvesnė nei skambinti„ getValue () `kelis kartus už kiekvieną vertę.
2. Duomenų gavimas: jei „getAllValues ()“ pateikia daugiau duomenų, nei reikia, tai gali būti lėtesnė dėl padidėjusio duomenų perdavimo ir apdorojimo. Tačiau jei vis tiek jums reikia visų verčių, greičiausiai efektyviau jas išsiųsti iš karto, o ne atskirai.
3. Talpyklos kaupimas ir optimizavimas: Kai kurios sistemos gali talpinti rezultatus arba optimizuoti pakartotinius skambučius į „getValue ()“, o tai galėtų sušvelninti našumo skirtumus. Tačiau jei „getAllValues ()“ yra optimizuotas siekiant gauti didelius kiekius, tai vis tiek gali pasiūlyti geresnį našumą.
Konkrečios scenarijai
- „Google Apps“ scenarijus: „Google Apps“ scenarijuje, naudojant „getValues ()“ (panašiai kaip „getAllValues ()`), paprastai rekomenduojama per kelias `getValue () skambučius, nes tai sumažina sąveikos su„ Google Shets “API skaičiumi, kuris gali žymiai pagerinti našumą [3].
- Apmąstymai ir nuosavybė: .NET atspindys, tokie metodai, tokie kaip „getProperties ()“, gali būti lėti dėl paties atspindžio viršutinės vertės. Tačiau talpyklos talpyklos rezultatai gali žymiai pagerinti našumą [1] [7].
- „ServiceNow“: „ServiceNow“, „getValue ()“ paprastai yra greitesnis nei „getDisplayValue ()“, nes ji gauna neapdorotą vertę be papildomo apdorojimo [5].
Išvada
Pasirinkimas tarp `getAllValues ()` ir `getValue ()" turėtų būti pagrįstas konkrečiais jūsų programos reikalavimais ir sistemos, su kuria dirbate, našumo charakteristikas. Jei jums reikia visų verčių ir galite jas efektyviai nuskaityti naudodami „getAllValues ()“, greičiausiai tai yra geresnis pasirinkimas. Tačiau jei jums reikia tik verčių pogrupio arba jei „getValue ()“ yra optimizuotas jūsų naudojimo atvejui, gali būti geriau. Priimdami šį sprendimą, visada atsižvelkite į tokius veiksnius kaip duomenų dydis, tinklo delsos ir konkrečios sistemos optimizacijos.
Citatos:[1] https://lotsacode.wordpress.com/2010/04/13/reflection-type-getproperties-and-performance/
[2] https://www.reddit.com/r/googleappscript/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-value
[5] https://www.servicenow.com/community/in-other-news/how-to-use-getdisplayValue-and-getvalue-for-gliderecord-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-grrid.com/angular-data-grid/component-cell-reslerer/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom-setting