Döngü Performansı
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.
Derlemin uzunluğunu döngüden önce bir değişkende saklayın:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Uzunluğu bir kez sakla
for (int i = 0; i < length; i++) // Saklanan değeri kullan
{
Console.WriteLine(numbers[i]);
}Döngü koşullarında yinelenen yöntem çağrılarından kaçının, örneğin:
for (int i = 0; i < GetCount(); i++)
{
// Loop body
}GetCount() yöntemi döngünün her yinelemesinde çağrılır. Bu, döngü 1000 kez çalışırsa GetCount() yönteminin de 1000 kez yürütüleceği anlamına gelir; çünkü döngü koşulu her yinelemeden önce değerlendirilir.
Bunu doğru şekilde şöyle yapabilirsin:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// Döngü gövdesi
}GetCount() döngü başlamadan önce yalnızca bir kez çağrılır ve değeri count değişkeninde saklanır. Ardından döngü, tüm yinelemeler için bu saklanan değeri kullanarak yöntemin tekrar tekrar çağrılması gerekliliğini ortadan kaldırır.
Bu yaklaşım, özellikle çağrılan yöntem karmaşık hesaplamalar veya veri erişimi gerçekleştiriyorsa, gereksiz işlemleri azaltarak kodunuzun daha hızlı çalışmasını sağlayabilir.
Görev
KolayoptimizedSum adlı bir yöntem oluşturun:
- Parametre olarak bir tamsayı dizisi alır
- Tüm öğelerin toplamını hesaplar
- Hem optimize edilmiş hem de optimize edilmemiş bir yaklaşım uygular:
- Optimize edilmemiş: Her döngü yinelemesinde array.Length çağrısı yapar
- Optimize edilmiş: Döngüden önce uzunluğu önbelleğe alır
- Optimize edilmiş yaklaşımdan elde edilen sonucu döndürür
Kendin dene
public class OptimizedSum
{
// optimizedSum metodunu uygulayın
public static int optimizedSum(int[] numbers)
{
// Kodunuzu buraya yazın
}
}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
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null GüvenliğiKendi başına pratik yap: Online C# derleyicisi