تدريب - استخدام دالة Concurrent لاختبار الأداء

مكتمل

يستكشف هذا التدريب العملي كيفية استخدام دالة Concurrent لتحسين الأداء.

  1. سجّل الدخول إلى Power Apps.

  2. من قائمة التنقل الموجودة على الجانب الأيمن لشاشة الصفحة الرئيسية، حدّد + إنشاء > تطبيق فارغ > إنشاء (ضمن تطبيق اللوحة الفارغ).

  3. قم بتسمية تطبيقك بعنوان مناسب واختر إنشاء.

  4. أولاً، نقوم ببناء مجموعتين بدون استخدام وظيفة Concurrent. قم بإدراج عنصر تحكم الزر، وقم بتسميته btnCollection، وتعيين خاصية Text إلى "Collection" وقم بتعيين خاصية OnSelect لهذه الصيغة:

    Set(varStart,Now());
    ClearCollect(colFruit,
    {Name: "banana", Category: "fruit",AvgCost: .49},
    {Name: "peach", Category: "fruit",AvgCost: 1.12},
    {Name: "strawberry", Category: "fruit",AvgCost: 2.99},
    {Name: "apple", Category: "fruit",AvgCost: 0.98},
    {Name: "orange", Category: "fruit",AvgCost: 1.49},
    {Name: "pear", Category: "fruit",AvgCost: 0.97},
    {Name: "cantaloupe", Category: "fruit",AvgCost: 3.99},
    {Name: "pineapple", Category: "fruit",AvgCost: 2.49},
    {Name: "cherry", Category: "fruit",AvgCost: 4.99},
    {Name: "mango", Category: "fruit",AvgCost: .99}
    );
    ClearCollect(colVegetable,
    {Name: "carrot", Category: "vegetable",AvgCost: .95},
    {Name: "lettuce", Category: "vegetable",AvgCost: 1.69},
    {Name: "potato", Category: "vegetable",AvgCost: 5.14},
    {Name: "zuccini", Category: "vegetable",AvgCost: 1.99},
    {Name: "broccoli", Category: "vegetable",AvgCost: 1.49},
    {Name: "cabbage", Category: "vegetable",AvgCost: 2.48},
    {Name: "celery", Category: "vegetable",AvgCost: 1.65},
    {Name: "asparagus", Category: "vegetable",AvgCost: 2.99},
    {Name: "kale", Category: "vegetable",AvgCost: 1.99},
    {Name: "cauliflower", Category: "vegetable",AvgCost: 3.24});
    Set(varSpeedCollect, Text(DateDiff(varStart, Now(), TimeUnit.Milliseconds)));
    
  5. إدراج تسمية النص، وتعيين خاصية BorderThickness إلى 3، وأعد تسميتها إلى lblSpeedCollect، وتعيين خاصية Text إلى:

    varSpeedCollect
    
  6. اضغط مع الاستمرار على مفتاح Alt، وحدّد زر المجموعة. يعرض تسمية txtSpeedCollect بالمللي ثانية بمقدار الوقت المستغرق لتشغيل معلومات العملية.

  7. لنقم بإضافة وظيفة Concurrent الآن إلى تطبيقنا لمقارنة الأداء. أدرج عنصر تحكم زر آخر، وأطلق عليه اسم btnConcurrent، وعيّن خاصية Text الخاصة به إلى "Concurrent" وعيّن خاصية OnSelect الخاصة به إلى هذه الصيغة:

    Set(varStart,Now());
    Concurrent(
    ClearCollect(collectFruit,
    {Name: "banana", Category: "fruit",AvgCost: .49},
    {Name: "peach", Category: "fruit",AvgCost: 1.12},
    {Name: "strawberry", Category: "fruit",AvgCost: 2.99},
    {Name: "apple", Category: "fruit",AvgCost: 0.98},
    {Name: "orange", Category: "fruit",AvgCost: 1.49},
    {Name: "pear", Category: "fruit",AvgCost: 0.97},
    {Name: "cantaloupe", Category: "fruit",AvgCost: 3.99},
    {Name: "pineapple", Category: "fruit",AvgCost: 2.49},
    {Name: "cherry", Category: "fruit",AvgCost: 4.99},
    {Name: "mango", Category: "fruit",AvgCost: .99}
    ),
    ClearCollect(collectVegetable,
    {Name: "carrot", Category: "vegetable",AvgCost: .95},
    {Name: "lettuce", Category: "vegetable",AvgCost: 1.69},
    {Name: "potato", Category: "vegetable",AvgCost: 5.14},
    {Name: "zucchini", Category: "vegetable",AvgCost: 1.99},
    {Name: "broccoli", Category: "vegetable",AvgCost: 1.49},
    {Name: "cabbage", Category: "vegetable",AvgCost: 2.48},
    {Name: "celery", Category: "vegetable",AvgCost: 1.65},
    {Name: "asparagus", Category: "vegetable",AvgCost: 2.99},
    {Name: "kale", Category: "vegetable",AvgCost: 1.99},
    {Name: "cauliflower", Category: "vegetable",AvgCost: 3.24}));
    Set(varSpeedConcurrent, Text(DateDiff(varStart, Now(), TimeUnit.Milliseconds)));
    
  8. أدخل عنصر تسمية النص آخر، وقم بتعيين خاصية BorderThickness إلى 3، وأعد تسميته إلى lblSpeedConcurrent، وتعيينها إلى خاصية Text إلى:

    varSpeedConcurrent
    
  9. اضغط مع الاستمرار على مفتاح Alt، وحدّد الزر Concurrent. يؤدي هذا إلى إنشاء نفس المجموعتين ويجب أن تلاحظ أن الأمر يستغرق نصف الوقت اللازم للإنشاء.

    لقطة شاشة للتطبيق مع ظهور التسمية بجانب concurrent التي تُظهر نصف الوقت كما فِي السابق.

يمكنك أن ترى أنه بإضافة الدالة Concurrent، قمنا بتحسين أداء بناء مجموعاتنا. يمكنك استخدام ذلك لتشغيل عدة عمليات فِي آنٍ واحد، مع الأخذ فِي الاعتبار أنه لا يمكنك التنبؤ بالترتيب الذي تبدأ وتنتهي به الصيغ داخل الدالة Concurrent. يمكن تشغيل جميع المهام فِي نفس الوقت، طالما أن نتائجك لا تعتمد على نتائج أخرى ضمن الدالة Concurrent. يمكن أن توفّر هذه التقنية تحسناً كبيراً فِي أداء تطبيقك.