Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أداء الحلقات التكرارية

جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 13 من 66.

تحسين أداء الحلقات يمكن أن يحسن بشكل كبير من سرعة تطبيقك، خاصة مع مجموعات البيانات الكبيرة.

قم بتخزين طول المجموعة في متغير قبل الحلقة:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // تخزين الطول مرة واحدة

for (int i = 0; i < length; i++) // استخدام القيمة المخزنة
{
    Console.WriteLine(numbers[i]);
}

تجنب استدعاءات الدوال المتكررة في شروط الحلقات، على سبيل المثال:

for (int i = 0; i < GetCount(); i++)
{
    // جسم الحلقة
}

يتم استدعاء التابع GetCount() في كل تكرار للحلقة. وهذا يعني أنه إذا تم تشغيل الحلقة 1000 مرة، فسيتم تنفيذ GetCount() 1000 مرة أيضاً، لأن شرط الحلقة يتم تقييمه قبل كل تكرار.

إليك كيفية القيام بذلك بشكل صحيح:

int count = GetCount();
for (int i = 0; i < count; i++)
{
    // جسم الحلقة
}

يتم استدعاء GetCount() مرة واحدة فقط قبل بدء الحلقة، ويتم تخزين قيمتها في المتغير count. ثم تستخدم الحلقة هذه القيمة المخزنة لجميع التكرارات، مما يلغي الحاجة إلى استدعاء الطريقة بشكل متكرر.

يمكن لهذا النهج أن يجعل الكود الخاص بك يعمل بشكل أسرع من خلال تقليل العمليات المتكررة، خاصة عندما تقوم الطريقة التي يتم استدعاؤها بإجراء عمليات حسابية معقدة أو الوصول إلى البيانات.

challenge icon

التحدي

سهل

قم بإنشاء دالة تسمى optimizedSum تقوم بما يلي:

  1. تأخذ مصفوفة من الأعداد الصحيحة كمعامل (parameter)
  2. تحسب مجموع كل العناصر
  3. تنفذ كلاً من النهج المحسن وغير المحسن:
    • غير محسن: استدعاء array.Length في كل تكرار للحلقة
    • محسن: تخزين الطول مؤقتاً قبل الحلقة
  4. تعيد النتيجة من النهج المحسن

ورقة مرجعية

قم بتخزين طول المجموعة في متغير قبل الحلقة لتجنب الوصول المتكرر للخاصية:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once

for (int i = 0; i < length; i++) // Use stored value
{
    Console.WriteLine(numbers[i]);
}

تجنب استدعاءات الدوال المتكررة في شروط الحلقة عن طريق تخزين النتيجة مؤقتاً:

// Inefficient - method called every iteration
for (int i = 0; i < GetCount(); i++)
{
    // Loop body
}

// Optimized - method called once
int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Loop body
}

جرّب بنفسك

public class OptimizedSum
{
    // قم بتنفيذ طريقة optimizedSum
    public static int optimizedSum(int[] numbers)
    {
        // اكتب الكود الخاص بك هنا
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow