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();
}
}