عند مقارنة `getAllValues ()` إلى "getValue ()` ، فإن الآثار المترتبة على الأداء تعتمد إلى حد كبير على السياق والتنفيذ المحدد لهذه الأساليب في النظام أو الإطار الذي تستخدمه. ومع ذلك ، هناك بعض المبادئ العامة التي يمكن أن توجه فهمنا:
اعتبارات الأداء العام
1. عدد المكالمات: بشكل عام ، يعد إجراء مكالمات أقل لاسترداد البيانات أكثر كفاءة من إجراء مكالمات متعددة. إذا استرجع `getAllValues ()` جميع البيانات اللازمة في مكالمة واحدة ، فقد يكون ذلك أكثر كفاءة من استدعاء `getValue ()` عدة مرات لكل قيمة.
2. استرجاع البيانات: إذا كان getAllValues () `يجلب المزيد من البيانات أكثر مما هو مطلوب ، فقد يكون ذلك أبطأ بسبب زيادة نقل البيانات ومعالجتها. ومع ذلك ، إذا كنت بحاجة إلى جميع القيم على أي حال ، فمن المحتمل أن يكون جلبها أكثر كفاءة في وقت واحد بدلاً من بشكل فردي.
3. التخزين المؤقت والتحسين: قد تتخبط بعض الأنظمة نتائج أو تحسين المكالمات المتكررة إلى "getValue () ، والتي يمكن أن تخفف من اختلافات الأداء. ومع ذلك ، إذا تم تحسين `getAllValues ()" لاسترجاعها بالجملة ، فقد لا يزال يقدم أداء أفضل.
سيناريوهات محددة
- سيناريو تطبيقات Google: في برنامج Google Apps Script ، باستخدام `getValues ()` (على غرار `getAllValues ()`) يوصى بشكل عام على مكالمات متعددة `getValue () لأنها تقلل من عدد التفاعلات مع واجهة برمجة تطبيقات أوراق Google ، والتي يمكن أن تحسن بشكل كبير من الأداء [3].
- الانعكاس والوصول إلى الممتلكات: في .NET انعكاس ، يمكن أن تكون أساليب مثل getProperties () `بطيئة بسبب النفقات العامة للانعكاس نفسه. ومع ذلك ، يمكن أن تحسن نتائج التخزين المؤقت بشكل كبير الأداء [1] [7].
- Servicenow: في servicenow ، `getValue ()` بشكل عام أسرع من "getDisplayValue ()" لأنه يسترجع القيمة الخام دون معالجة إضافية [5].
خاتمة
يجب أن يعتمد الاختيار بين `getallvalues ()` و `getValue ()` على المتطلبات المحددة لتطبيقك وخصائص أداء النظام التي تعمل معها. إذا كنت بحاجة إلى جميع القيم ويمكنك استعادتها بكفاءة باستخدام `getAllValues ()` ، فمن المحتمل أن يكون الخيار الأفضل. ومع ذلك ، إذا كنت بحاجة فقط إلى مجموعة فرعية من القيم أو إذا تم تحسين `getValue ()" لحالة الاستخدام الخاصة بك ، فقد يكون من الأفضل. ضع في اعتبارك دائمًا عوامل مثل حجم البيانات ، ومواصفات الشبكة ، والتحسينات الخاصة بالنظام عند اتخاذ هذا القرار.
الاستشهادات:[1]
[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-renturn-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]
[8]
[9] https://salesforce.stackexchange.com/questions/8829/getinstance-vs-getvalues-custom-setting