Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Существуют ли последствия для эффективности при использовании getAllValues ​​() через getValue ()


Существуют ли последствия для эффективности при использовании getAllValues ​​() через getValue ()


При сравнении `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