2
Microsoft.Net ortamında C# ile uygulama geliştirirken uygulamanın hızlı çalışması için dikkat edilmesi gerekenler nelerdir?
C# ile uygulama geliştirirken uygulamanın performansını nasıl arttırırsınız?
2
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.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace uzmanimNet { class Program { static void Main(string[] args) { List<int> SayiListesi = new List<int>(); Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 10000; i++) { SayiListesi.Add(i); } sw.Stop(); Console.WriteLine("Generic List Sure:" + sw.ElapsedTicks); sw.Reset(); int[] SayiDizisi = new int[10000]; sw.Start(); for (int i = 0; i < 10000; i++) { SayiDizisi[i] = i; } sw.Stop(); Console.WriteLine("int Array Sure:" + sw.ElapsedTicks); Console.ReadLine(); } } }Yukarıdaki kodun çıktısı
Generic List Sure:399 int Array Sure:112Görüldüğü gibi int[] yani integer dizisi List<int> jenerik türüne göre 3.5 daha hızlı.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace uzmanim.Net { class Program { static void Main(string[] args) { List<Int32> Limit = new List<int>(); List<Int32> liste1 = new List<Int32>(); List<Int32> liste2 = new List<Int32>(); for (int i = 0; i < 10000; i++) { Limit.Add(i); } Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < Limit.Count; i++) { liste1.Add(i); } sw.Stop(); Console.Write("For Dongusu :- " + sw.ElapsedTicks + "\n"); sw.Restart(); foreach (int a in Limit) { liste2.Add(a); } sw.Stop(); Console.Write("Foreach Dongusu:- " + sw.ElapsedTicks); Console.ReadLine(); } } }Yukarıdaki kodun çıktısı
For Dongusu :- 461 Foreach Dongusu:- 561
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace uzmanim.Net { class Program { static void Main(string[] args) { string First = "B"; StringBuilder sb = new StringBuilder("B"); Stopwatch st = new Stopwatch(); st.Start(); for (int i = 0; i < 1000; i++) { First = First + "B"; } st.Stop(); Console.WriteLine("String Kullanarak :-" + st.ElapsedTicks); st.Restart(); for (int i = 0; i < 1000; i++) { sb.Append("B"); } st.Stop(); Console.WriteLine("Stringbuilder Kullanarak :-" + st.ElapsedTicks); Console.ReadLine(); } } }Yukarıdaki kodun çıktısı
String Kullanarak :-1180 Stringbuilder Kullanarak :-31
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace uzmanim.Net { public class Test { public static string Ad { get; set; } public static String _soyad; } class Program { static void Main(string[] args) { Stopwatch st = new Stopwatch(); st.Start(); for (int i = 0; i < 100; i++) { Test.Ad = "Value"; } st.Stop(); Console.WriteLine("Property Kullanarak:" + st.ElapsedTicks); st.Restart(); for (int i = 0; i < 100; i++) { Test._soyad = "Value"; } st.Stop(); Console.WriteLine("Dogrudan Field'e atama: " + st.ElapsedTicks); Console.ReadLine(); } } }Yukarıdaki kodun çıktısı şu olacaktır:
Property Kullanarak:239 Dogrudan Field'e atama: 1
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol