Menu
Coddy logo textTech

Loop Performance

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 13 / 66.

Döngü performansını optimize etmek, özellikle büyük veri kümeleriyle çalışırken uygulamanızın hızını önemli ölçüde artırabilir.

Döngüden önce koleksiyon uzunluğunu bir değişkende saklayın:

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]);
}

Döngü koşullarında tekrarlanan metot çağrılarından kaçının, örneğin:

for (int i = 0; i < GetCount(); i++)
{
    // Loop body
}

GetCount() metodu döngünün her yinelemesinde çağrılır. Bu, döngü 1000 kez çalışırsa GetCount()nin de 1000 kez çalıştırılacağı anlamına gelir, çünkü döngü koşulu her yinelemeden önce değerlendirilir.

Bunu doğru yapmak için işte:

int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Döngü gövdesi
}

GetCount() döngü başlamadan önce sadece bir kez çağrılır ve değeri count değişkeninde saklanır. Sonra döngü tüm yinelemeler için bu saklanmış değeri kullanır, yöntemi tekrar tekrar çağırma ihtiyacını ortadan kaldırır.

Bu yaklaşım, gereksiz işlemleri azaltarak kodunuzun daha hızlı çalışmasını sağlayabilir, özellikle çağrılan metod karmaşık hesaplamalar veya veri erişimi gerçekleştiriyorsa.

challenge icon

Görev

Kolay

optimizedSum adında bir metod oluşturun ki:

  1. Bir tamsayı dizisi parametre olarak alsın
  2. Tüm elemanların toplamını hesaplasın
  3. Hem optimize edilmiş hem de optimize edilmemiş bir yaklaşımı uygulasın:
    • Optimize edilmemiş: Her döngü yinelemesinde array.Length çağırın
    • Optimize edilmiş: Döngüden önce uzunluğu önbelleğe alın
  4. Optimize edilmiş yaklaşımdan sonucu döndürsün

Kopya kağıdı

Döngüden önce koleksiyon uzunluğunu bir değişkende saklayın, tekrarlanan özellik erişimini önlemek için:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Uzunluğu bir kez sakla

for (int i = 0; i < length; i++) // Depolanan değeri kullan
{
    Console.WriteLine(numbers[i]);
}

Sonucu önbelleğe alarak döngü koşullarındaki tekrarlanan metot çağrılarını önleyin:

// Verimsiz - her yinelemede metot çağrılır
for (int i = 0; i < GetCount(); i++)
{
    // Döngü gövdesi
}

// Optimize edilmiş - metot bir kez çağrılır
int count = GetCount();
for (int i = 0; i < count; i++)
{
    // Döngü gövdesi
}

Kendin dene

public class OptimizedSum
{
    // optimizedSum metodunu implement edin
    public static int optimizedSum(int[] numbers)
    {
        // Kodu buraya yazın
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler