При сравнении `getallValues ()` с `getValue ()`, последствия для эффективности в значительной степени зависят от контекста и конкретной реализации этих методов в системе или структуре, которую вы используете. Тем не менее, есть некоторые общие принципы, которые могут направить наше понимание:
Общие соображения производительности
1. Количество вызовов: Как правило, делать меньше вызовов для извлечения данных является более эффективным, чем выполнение нескольких вызовов. Если `getAllValues ()` извлекает все необходимые данные за один вызов, это может быть более эффективным, чем вызов `getValue ()` несколько раз для каждого значения.
2. Поиск данных: если `getAllValues ()` получает больше данных, чем необходимо, это потенциально может быть медленнее из -за увеличения передачи данных и обработки. Однако, если вам все равно нужны все значения, вероятно, более эффективно извлекать их все сразу, а не индивидуально.
3. Однако, если `getAllValues ()` оптимизирован для объемного поиска, это все равно может предложить лучшую производительность.
конкретные сценарии
- Скрипт приложений Google: в скрипте приложений Google, используя `getValues ()` (аналогично `getAllValues ()`), как правило, рекомендуется в нескольких вызовах `getValue ()`, потому что он уменьшает количество взаимодействий с API Google Sheets, что может значительно улучшить производительность [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-wield-return-onyly-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-grid.com/angular-data-grid/component-cell-renderer/
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom-setting