Lorsque vous comparez «getAllValues ()» à «getValue ()», les implications de performance dépendent largement du contexte et de la mise en œuvre spécifique de ces méthodes dans le système ou le cadre que vous utilisez. Cependant, il existe des principes généraux qui peuvent guider notre compréhension:
Considérations générales de performance
1. Nombre d'appels: Généralement, passer moins d'appels pour récupérer des données est plus efficace que de passer plusieurs appels. Si `getAllValues ()` récupère toutes les données nécessaires en un seul appel, cela pourrait être plus efficace que d'appeler `GetValue () 'plusieurs fois pour chaque valeur.
2. Récupération des données: si `GetAllValues ()` récupère plus de données que nécessaire, elle pourrait être plus lente en raison de l'augmentation du transfert et du traitement des données. Cependant, si vous avez besoin de toutes les valeurs de toute façon, il est probablement plus efficace de les chercher tous en même temps plutôt qu'individuellement.
3. Cache et optimisation: certains systèmes peuvent mettre en cache les résultats ou optimiser les appels répétés vers `` getValue () '', ce qui pourrait atténuer les différences de performances. Cependant, si `GetAllValues ()` est optimisé pour la récupération en vrac, il pourrait toujours offrir de meilleures performances.
Scénarios spécifiques
- Script Google Apps: dans le script Google Apps, en utilisant `GetValues () '(similaire à` GetAllValues ()') est généralement recommandé sur plusieurs appels `getValue () 'car il réduit le nombre d'interactions avec l'API Google Sheets, ce qui peut améliorer considérablement les performances [3].
- Réflexion et accès aux propriétés: dans .NET Réflexion, des méthodes comme «getProperties ()» peuvent être lentes en raison de la surcharge de la réflexion elle-même. Cependant, les résultats de mise en cache peuvent améliorer considérablement les performances [1] [7].
- ServiceNow: dans ServiceNow, `getValue ()` est généralement plus rapide que `GetDisplayValue ()` car il récupère la valeur brute sans traitement supplémentaire [5].
Conclusion
Le choix entre «getAllValues ()» et «getValue ()» devrait être basé sur les exigences spécifiques de votre application et les caractéristiques de performance du système avec lequel vous travaillez. Si vous avez besoin de toutes les valeurs et que vous pouvez les récupérer efficacement avec «getAllValues ()», c'est probablement le meilleur choix. Cependant, si vous n'avez besoin que d'un sous-ensemble de valeurs ou si `GetValue ()` est optimisé pour votre cas d'utilisation, il peut être préférable. Considérez toujours des facteurs tels que la taille des données, la latence du réseau et les optimisations spécifiques au système lors de la prise de cette décision.
Citations:[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
[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-rerer/
[9] https://salesforce.stackexchange.com/questions/8829/GetInstance-vs-getValues-Custom-Setting