C# Kodu İçin Performans İpuçları!! C# ile uygulama yazarken kodunuzda yapacağınız küçük değişiklikler uygulama performansında ciddi artışlara sebep olacaktır. Aşağıda hızlıca yapılabilecek performans iyileştirmeleri için 5 ipucu bulunmakta. Bunlar kolaylıkla Vb. Net diline de uyarlanabilir. 1 Doğru veri türünü seçin Yanlış veri türünü seçmek uygulamanızın performansını düşürür. Örneğin List jenerik türü ile int integer dizisini ele alırsak, aşağıdaki kod aradaki performans farkını gösterecektir. Kod: using System; using System. Collections. Generic; using System. Linq; using System. Text; using System. Diagnostics; namespace tht { class Program { static v oid Main { List SayiListesi = new List ; Stopwatch sw = new Stopwatch ; sw. Start ; for (int i = 0; i < 10000; i++) sw. Stop ; Console. WriteLine ; sw. Reset ; int SayiDizisi = new int ; sw. Start ; for (int i = 0; i < 10000; i++) sw. Stop ; Console. WriteLine ; Console. ReadLine ; } } } Alıntı: Yukarıdaki kodun çıktısı: Generic List Sure: 399 int Array Sure: 112 <font color="olive">Görüldüğü gibi int yani integer dizisi List jenerik türüne göre 3.5 daha hızlı. 2 Mümkünse foreach yerine for kullanın. for döngüsü foreach'e göre daha hızlıdır. Kod: using System; using System. Collections. Generic; using System. Linq; using System. Text; using System. Diagnostics; namespace tht { class Program { static v oid Main { List Limit = new List ; List liste1 = new List ; List liste2 = new List ; for (int i = 0; i < 10000; i++) Stopwatch sw = new Stopwatch ; sw. Start ; for (int i = 0; i < Limit. Count; i++) sw. Stop ; Console. Write ; sw. Restart ; foreach sw. Stop ; Console. Write ; Console. ReadLine ; } } } Alıntı: Yukarıdaki kodun çıktısı For Döngüsü : 461 Foreach Döngüsü: 561 3 class ve struct doğru ve uygun şekilde kullanın. struct değer tür , class referans türdür. . Değer türler, referans türlere göre daha hızlıdır. Ne zaman hangisini kullanacağınızı bilin. 4 Büyük boyutlu metin, yazi, string işlemlerinde StringBuilder kullanın StringBuilder türü string'e göre çok daha hızlıdır. Kod: using System; using System. Collections. Generic; using System. Linq; using System. Text; using System. Diagnostics; namespace tht { class Program { static v oid Main { string First = "B"; StringBuilder sb = new StringBuilder ; Stopwatch st = new Stopwatch ; st. Start ; for (int i = 0; i < 1000; i++) st. Stop ; Console. WriteLine ; st. Restart ; for (int i = 0; i < 1000; i++) st. Stop ; Console. WriteLine ; Console. ReadLine ; } } } Alıntı: Yukarıdaki kodun çıktısı String Kullanarak : 1180 Stringbuilder Kullanarak : 31 5 Gerektiğinde sınıf içinde Property yerine Field kullanın değer atamalarınızı doğrudan yapın. Kod: using System; using System. Collections. Generic; using System. Linq; using System. Text; using System. Diagnostics; namespace tht { public class Test { public static string Ad public static String soyad; } class Program { static v oid Main { Stopwatch st = new Stopwatch ; st. Start ; for (int i = 0; i < 100; i++) st. Stop ; Console. WriteLine ; st. Restart ; for (int i = 0; i < 100; i++) st. Stop ; Console. WriteLine ; Console. ReadLine ; } } } Alıntı: Yukarıdaki kodun çıktısı şu olacaktır: Property Kullanarak: 239 Dogrudan Field'e atama: 1