Yanlış veri türünü seçmek uygulamanızın performansını düşürür.
Örneğin List<int> jenerik türü ile int[] integer dizisini ele alırsak, aşağıdaki kod aradaki performans farkını gösterecektir.
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanimNet\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<int> SayiListesi = new List<int>();\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiListesi.Add(i);\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"Generic List Sure:\" + sw.ElapsedTicks);\r\n sw.Reset();\r\n int[] SayiDizisi = new int[10000];\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiDizisi[i] = i;\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"int Array Sure:\" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
Generic List Sure:399\r\nint 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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<Int32> Limit = new List<int>();\r\n List<Int32> liste1 = new List<Int32>();\r\n List<Int32> liste2 = new List<Int32>();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n Limit.Add(i);\r\n }\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < Limit.Count; i++)\r\n {\r\n liste1.Add(i);\r\n }\r\n sw.Stop();\r\n Console.Write(\"For Dongusu :- \" + sw.ElapsedTicks + \"\\n\");\r\n sw.Restart();\r\n foreach (int a in Limit)\r\n {\r\n liste2.Add(a);\r\n\r\n }\r\n sw.Stop();\r\n Console.Write(\"Foreach Dongusu:- \" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
For Dongusu :- 461\r\nForeach Dongusu:- 561
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n string First = \"B\";\r\n StringBuilder sb = new StringBuilder(\"B\");\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n First = First + \"B\";\r\n\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"String Kullanarak :-\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n sb.Append(\"B\");\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Stringbuilder Kullanarak :-\" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n\r\n }\r\n\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı
String Kullanarak :-1180\r\nStringbuilder Kullanarak :-31
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n public class Test\r\n {\r\n\r\n public static string Ad { get; set; }\r\n public static String _soyad;\r\n\r\n }\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test.Ad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Property Kullanarak:\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test._soyad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Dogrudan Field'e atama: \" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı şu olacaktır:
Property Kullanarak:239\r\nDogrudan Field'e atama: 1
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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanimNet\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<int> SayiListesi = new List<int>();\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiListesi.Add(i);\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"Generic List Sure:\" + sw.ElapsedTicks);\r\n sw.Reset();\r\n int[] SayiDizisi = new int[10000];\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiDizisi[i] = i;\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"int Array Sure:\" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
Generic List Sure:399\r\nint 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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<Int32> Limit = new List<int>();\r\n List<Int32> liste1 = new List<Int32>();\r\n List<Int32> liste2 = new List<Int32>();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n Limit.Add(i);\r\n }\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < Limit.Count; i++)\r\n {\r\n liste1.Add(i);\r\n }\r\n sw.Stop();\r\n Console.Write(\"For Dongusu :- \" + sw.ElapsedTicks + \"\\n\");\r\n sw.Restart();\r\n foreach (int a in Limit)\r\n {\r\n liste2.Add(a);\r\n\r\n }\r\n sw.Stop();\r\n Console.Write(\"Foreach Dongusu:- \" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
For Dongusu :- 461\r\nForeach Dongusu:- 561
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n string First = \"B\";\r\n StringBuilder sb = new StringBuilder(\"B\");\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n First = First + \"B\";\r\n\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"String Kullanarak :-\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n sb.Append(\"B\");\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Stringbuilder Kullanarak :-\" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n\r\n }\r\n\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı
String Kullanarak :-1180\r\nStringbuilder Kullanarak :-31
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n public class Test\r\n {\r\n\r\n public static string Ad { get; set; }\r\n public static String _soyad;\r\n\r\n }\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test.Ad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Property Kullanarak:\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test._soyad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Dogrudan Field'e atama: \" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı şu olacaktır:
Property Kullanarak:239\r\nDogrudan Field'e atama: 1
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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanimNet\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<int> SayiListesi = new List<int>();\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiListesi.Add(i);\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"Generic List Sure:\" + sw.ElapsedTicks);\r\n sw.Reset();\r\n int[] SayiDizisi = new int[10000];\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiDizisi[i] = i;\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"int Array Sure:\" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
Generic List Sure:399\r\nint 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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<Int32> Limit = new List<int>();\r\n List<Int32> liste1 = new List<Int32>();\r\n List<Int32> liste2 = new List<Int32>();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n Limit.Add(i);\r\n }\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < Limit.Count; i++)\r\n {\r\n liste1.Add(i);\r\n }\r\n sw.Stop();\r\n Console.Write(\"For Dongusu :- \" + sw.ElapsedTicks + \"\\n\");\r\n sw.Restart();\r\n foreach (int a in Limit)\r\n {\r\n liste2.Add(a);\r\n\r\n }\r\n sw.Stop();\r\n Console.Write(\"Foreach Dongusu:- \" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
For Dongusu :- 461\r\nForeach Dongusu:- 561
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n string First = \"B\";\r\n StringBuilder sb = new StringBuilder(\"B\");\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n First = First + \"B\";\r\n\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"String Kullanarak :-\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n sb.Append(\"B\");\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Stringbuilder Kullanarak :-\" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n\r\n }\r\n\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı
String Kullanarak :-1180\r\nStringbuilder Kullanarak :-31
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n public class Test\r\n {\r\n\r\n public static string Ad { get; set; }\r\n public static String _soyad;\r\n\r\n }\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test.Ad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Property Kullanarak:\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test._soyad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Dogrudan Field'e atama: \" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı şu olacaktır:
Property Kullanarak:239\r\nDogrudan Field'e atama: 1
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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanimNet\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<int> SayiListesi = new List<int>();\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiListesi.Add(i);\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"Generic List Sure:\" + sw.ElapsedTicks);\r\n sw.Reset();\r\n int[] SayiDizisi = new int[10000];\r\n sw.Start();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n SayiDizisi[i] = i;\r\n }\r\n sw.Stop();\r\n Console.WriteLine(\"int Array Sure:\" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
Generic List Sure:399\r\nint 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;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n List<Int32> Limit = new List<int>();\r\n List<Int32> liste1 = new List<Int32>();\r\n List<Int32> liste2 = new List<Int32>();\r\n for (int i = 0; i < 10000; i++)\r\n {\r\n Limit.Add(i);\r\n }\r\n Stopwatch sw = new Stopwatch();\r\n sw.Start();\r\n for (int i = 0; i < Limit.Count; i++)\r\n {\r\n liste1.Add(i);\r\n }\r\n sw.Stop();\r\n Console.Write(\"For Dongusu :- \" + sw.ElapsedTicks + \"\\n\");\r\n sw.Restart();\r\n foreach (int a in Limit)\r\n {\r\n liste2.Add(a);\r\n\r\n }\r\n sw.Stop();\r\n Console.Write(\"Foreach Dongusu:- \" + sw.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n}Yukarıdaki kodun çıktısı
For Dongusu :- 461\r\nForeach Dongusu:- 561
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n string First = \"B\";\r\n StringBuilder sb = new StringBuilder(\"B\");\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n First = First + \"B\";\r\n\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"String Kullanarak :-\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 1000; i++)\r\n {\r\n sb.Append(\"B\");\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Stringbuilder Kullanarak :-\" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n\r\n }\r\n\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı
String Kullanarak :-1180\r\nStringbuilder Kullanarak :-31
using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Diagnostics;\r\n\r\nnamespace uzmanim.Net\r\n{\r\n public class Test\r\n {\r\n\r\n public static string Ad { get; set; }\r\n public static String _soyad;\r\n\r\n }\r\n class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n Stopwatch st = new Stopwatch();\r\n st.Start();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test.Ad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Property Kullanarak:\" + st.ElapsedTicks);\r\n st.Restart();\r\n for (int i = 0; i < 100; i++)\r\n {\r\n Test._soyad = \"Value\";\r\n }\r\n st.Stop();\r\n Console.WriteLine(\"Dogrudan Field'e atama: \" + st.ElapsedTicks);\r\n Console.ReadLine();\r\n }\r\n }\r\n\r\n}Yukarıdaki kodun çıktısı şu olacaktır:
Property Kullanarak:239\r\nDogrudan Field'e atama: 1
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?
Toplam 1 cevap
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