`getAllValues ()`를`getValue ()`와 비교할 때, 성능은 사용중인 시스템 또는 프레임 워크에서 이러한 방법의 컨텍스트 및 특정 구현에 따라 크게 달라집니다. 그러나 우리의 이해를 안내 할 수있는 몇 가지 일반적인 원칙이 있습니다.
일반 성능 고려 사항
1. 통화 수 : 일반적으로 데이터를 검색하기 위해 전화를 적게하는 것이 여러 통화보다 효율적입니다. `getAllValues ()`가 한 번의 호출에서 필요한 모든 데이터를 검색하면 각 값에 대해`getValue ()` '를 여러 번 호출하는 것보다 더 효율적일 수 있습니다.
2. 데이터 검색 :`getAllValues ()`필요한 것보다 더 많은 데이터를 가져 오면 데이터 전송 및 처리 증가로 인해 잠재적으로 느려질 수 있습니다. 그러나 어쨌든 모든 값이 필요한 경우 개별적으로보다 한 번에 가져 오는 것이 더 효율적 일 수 있습니다.
3. 캐싱 및 최적화 : 일부 시스템은 결과를 캐시하거나`getValue ()`에 대한 반복 호출을 최적화하여 성능 차이를 완화 할 수 있습니다. 그러나`getAllValues ()`가 대량 검색을 위해 최적화되면 여전히 더 나은 성능을 제공 할 수 있습니다.
특정 시나리오
-Google Apps 스크립트 : Google Apps 스크립트에서`getValues ()`를 사용하는 (getAllValues ()`)를 사용하는 것은 일반적으로 Google Sheets API와의 상호 작용 수를 줄이기 때문에 여러`getValue ()`호출에 대해 일반적으로 권장됩니다 [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-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