using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; /// @author Vesa Lappalainen /// @version 06.10.2012 /// /// Ohjelmassa vertaillaan String- ja StringBuilder-olioiden tehokkuutta. /// public class StringVsStringBuilder { /// /// Otetaan aikaa merkkijonojen yhdistämsiestä /// /// ei käytössä public static void Main(string[] args) { // Yhdistellään merkkijonoja StringBuilder-olion avulla const int MONTAKO = 100000; // Montako kertaa merkkijonoja yhdistellään Stopwatch sw = Stopwatch.StartNew(); StringBuilder sb = new StringBuilder("a"); for (int i = 0; i < MONTAKO; i++) { sb.Append("a" + i); } // 10. kierroksen jälkeen aa0a1a2a3a4a5a6a7a8a9 sw.Stop(); double milliseconds = sw.Elapsed.TotalMilliseconds; System.Console.WriteLine("StringBuilder {0,7:##0.000} s", milliseconds / 1000); Console.WriteLine("Pituus " + sb.Length); sw.Reset(); // Stringillä sama juttu sw.Start(); String s = "a"; for (int i = 0; i < MONTAKO; i++) { s += "a" + i; } // 2.kierroksen jälkeen "aa0a1" sw.Stop(); milliseconds = sw.Elapsed.TotalMilliseconds; System.Console.WriteLine("String {0,7:##0.000} s", milliseconds / 1000); Console.WriteLine("Pituus " + s.Length); Console.WriteLine(sb.ToString().Equals(s)); System.Console.ReadKey(); } }