Порівнюючи `getallValues ()` до `getValue ()`, наслідки ефективності значною мірою залежать від контексту та конкретної реалізації цих методів у системі або рамках, яку ви використовуєте. Однак є деякі загальні принципи, які можуть керувати нашим розумінням:
Загальні міркування щодо ефективності
1. Кількість дзвінків: Як правило, робити менші дзвінки для отримання даних є більш ефективним, ніж здійснення декількох дзвінків. Якщо `getallValues ()` отримує всі необхідні дані за один дзвінок, це може бути ефективніше, ніж дзвінок `getValue ()` Кілька разів для кожного значення.
2. Отримання даних: Якщо `getallValues ()` отримує більше даних, ніж потрібно, це може бути повільніше через збільшення передачі та обробки даних. Однак, якщо вам все одно потрібні всі значення, швидше за все, ефективніше отримати їх відразу, а не окремо.
3. Кешування та оптимізація: Деякі системи можуть кешувати результати або оптимізувати повторні дзвінки до `getValue ()`, що може пом'якшити відмінності щодо продуктивності. Однак, якщо `getallValues ()` оптимізований для об'ємного пошуку, це все одно може запропонувати кращі показники.
конкретні сценарії
- Script Apps Google: у Script Apps Google, використовуючи `getValues ()` (подібно до `getallValues ()`), як правило, рекомендується через кілька дзвінків `getValue (), оскільки це зменшує кількість взаємодій з API Google Heets, що може значно покращити продуктивність [3].
- Роздуми та доступ до властивостей: у .NET відбиття, такі методи, як `getProperties ()` можуть бути повільними через накладні витрати самого відображення. Однак результати кешування можуть значно покращити продуктивність [1] [7].
- ServiceNow: У ServiceNow, `getValue ()`, як правило, швидше, ніж `getDisplayValue ()`, оскільки він отримує необроблену цінність без додаткової обробки [5].
Висновок
Вибір між `getallValues ()` та `getValue ()` повинен базуватися на конкретних вимогах вашої програми та характеристик продуктивності системи, з якою ви працюєте. Якщо вам потрібні всі значення і можете їх ефективно отримати за допомогою `getallValues ()`, це, мабуть, кращий вибір. Однак якщо вам потрібна лише підмножина значень або якщо `getValue ()` оптимізовано для вашого випадку використання, це може бути кращим. Завжди враховуйте такі фактори, як розмір даних, затримка мережі та оптимізації, що стосуються системи, при прийнятті цього рішення.
Цитати:[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-value
[5] https://www.servicenow.com/community/in-other-news/how-to-use-getdisplayvalue-and-getvalue-for-gliderecord-or/ba-p/2896719
.
[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-setting