Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Czy istnieją konsekwencje wydajności przy użyciu getAllValues ​​() nad getValue ()


Czy istnieją konsekwencje wydajności przy użyciu getAllValues ​​() nad getValue ()


Porównując „getAllValues ​​()` z „getValue ()`, implikacje wydajności w dużej mierze zależą od kontekstu i konkretnej implementacji tych metod w systemie lub frameworku, z którego używasz. Istnieją jednak pewne ogólne zasady, które mogą kierować naszym zrozumieniem:

ogólne rozważania dotyczące wydajności

1. Liczba połączeń: Zasadniczo wykonywanie mniejszej liczby połączeń w celu pobierania danych jest bardziej wydajne niż wykonywanie wielu połączeń. Jeśli `` getAllValues ​​() odzyskuje wszystkie niezbędne dane w jednym wywołaniu, może być bardziej wydajne niż wywoływanie `` getValue () `wiele razy dla każdej wartości.

2. Odzyskiwanie danych: Jeśli `` getAllValues ​​() `` pobiera więcej danych niż to, może być potencjalnie wolniejsze ze względu na zwiększone przesyłanie danych i przetwarzanie. Jeśli jednak potrzebujesz wszystkich wartości, prawdopodobnie bardziej wydajne jest je wszystkie naraz niż indywidualnie.

3. Buforowanie i optymalizacja: niektóre systemy mogą buforować wyniki lub zoptymalizować powtarzające się połączenia z „getValue ()`, które mogą złagodzić różnice wydajności. Jeśli jednak „getAllValues ​​()` zostanie zoptymalizowany pod kątem pobierania luzem, może nadal oferować lepszą wydajność.

określone scenariusze

- Skrypt Google Apps: w skrypcie Google Apps, używając `getValues ​​()` (podobny do „getallValues ​​()`) jest ogólnie zalecany przez wiele połączeń „getValue ()”, ponieważ zmniejsza liczbę interakcji z interfejsem API Arretów Google, co może znacznie poprawić wydajność [3].

- Refleksja i dostęp do właściwości: W refleksji .NET metody takie jak „getProperties ()` mogą być powolne z powodu kosztów samej refleksji. Jednak wyniki buforowania mogą znacznie poprawić wydajność [1] [7].

- ServiceNow: W ServiceNow, „getValue ()` jest ogólnie szybszy niż „getDisplayValue ()` `ponieważ pobiera surową wartość bez dodatkowego przetwarzania [5].

Wniosek

Wybór między „getAllValues ​​()` i „getValue ()” powinien opierać się na konkretnych wymaganiach aplikacji i charakterystyce wydajności systemu, z którym pracujesz. Jeśli potrzebujesz wszystkich wartości i możesz je wydajnie odzyskać za pomocą „getallValues ​​()`, prawdopodobnie jest to lepszy wybór. Jeśli jednak potrzebujesz tylko podzbioru wartości lub jeśli `` getValue () 'jest zoptymalizowane pod kątem użycia, może być preferowane. Zawsze rozważ czynniki takie jak wielkość danych, opóźnienie sieci i optymalizacje specyficzne dla systemu podczas podejmowania tej decyzji.

Cytaty:
[1] https://lotacode.wordpress.com/2010/04/13/reflection-type-getproperties-and-performance/
[2] https://www.reddit.com/r/googleapppsscript/comments/px959t/getrangegetValues_performance_implication_when/
[3] https://stackoverflow.com/questions/42776311/optimising-code-getvalue-and-looping
[4] https://drupal.stackexchange.com/questions/214036/getvalue-of-multiple-values-field-return-ly-the-first-value
[5] https://www.servicenow.com/community/in-other-news/how--on-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-grid.com/angular-data-grid/component-cell-renderer/
[9] https://salesforce.stackexchange.com/questions/8829/getInstance-vs-getValues-custom-tetting