Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Existem implicações de desempenho ao usar getAllValues ​​() sobre getValue ()


Existem implicações de desempenho ao usar getAllValues ​​() sobre getValue ()


Ao comparar `getAllValues ​​()` com `getValue ()`, as implicações de desempenho dependem amplamente do contexto e da implementação específica desses métodos no sistema ou estrutura que você está usando. No entanto, existem alguns princípios gerais que podem orientar nosso entendimento:

Considerações gerais de desempenho

1. Número de chamadas: Geralmente, fazer menos chamadas para recuperar dados é mais eficiente do que fazer várias chamadas. Se `getAllValues ​​()` recuperar todos os dados necessários em uma chamada, pode ser mais eficiente do que chamar `getValue ()` várias vezes para cada valor.

2. Recuperação de dados: se `getAllValues ​​()` buscar mais dados do que o necessário, pode ser potencialmente mais lento devido ao aumento da transferência e processamento de dados. No entanto, se você precisar de todos os valores de qualquer maneira, provavelmente é mais eficiente buscá -los de uma só vez, em vez de individualmente.

3. Cache e otimização: Alguns sistemas podem armazenar em cache os resultados ou otimizar chamadas repetidas para `getValue ()`, que pode mitigar as diferenças de desempenho. No entanto, se `getAllValues ​​()` for otimizado para recuperação em massa, ele ainda poderá oferecer um melhor desempenho.

cenários específicos

- Script do Google Apps: no script do Google Apps, o uso de `getValues ​​()` (semelhante a `getAllValues ​​()`) é geralmente recomendado em várias chamadas `getValue () 'porque reduz o número de interações com a API do Google Sheets, o que pode melhorar significativamente o desempenho [3].

- Reflexão e acesso à propriedade: Na reflexão .NET, métodos como `getProperties ()` podem ser lentos devido à sobrecarga da própria reflexão. No entanto, os resultados do cache podem melhorar drasticamente o desempenho [1] [7].

- ServiceNow: em ServiceNow, `getValue ()` geralmente é mais rápido que `getDisplayValue ()` porque recupera o valor bruto sem processamento adicional [5].

Conclusão

A escolha entre `getAllValues ​​()` e `getValue ()` deve ser baseada nos requisitos específicos do seu aplicativo e nas características de desempenho do sistema com o qual você está trabalhando. Se você precisar de todos os valores e puder recuperá -los com eficiência com `getAllValues ​​()`, é provável que seja a melhor escolha. No entanto, se você precisar apenas de um subconjunto de valores ou se `getValue ()` for otimizado para o seu caso de uso, ele poderá ser preferível. Sempre considere fatores como tamanho de dados, latência de rede e otimizações específicas do sistema ao tomar essa decisão.

Citações:
[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-lly-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-trid.com/angular-data-trid/component-cell-renderer/
[9] https://salesforce.stackexchange.com/questions/8829/getInstance-vs-getValues-custom-setting