using System; using System.Text; using Sitecore.Diagnostics; namespace ConsoleApplication5 { public delegate void Method(params string[] input); public class Program { private const int cycles = 10000000; static void Main() { string input1 = "aaa"; Tel(Concat1, input1, input1); Tel(Concat2, input1, input1); Tel(Concat3, input1, input1); Console.WriteLine(); string input2 = "aaaa"; Tel(Concat1, input1, input2); Tel(Concat2, input1, input2); Tel(Concat3, input1, input2); Console.WriteLine(); Tel(Concat1, input2, input2); Tel(Concat2, input2, input2); Tel(Concat3, input2, input2); Console.WriteLine(); string input3 = "aaaaa"; Tel(Concat1, input1, input3); Tel(Concat2, input1, input3); Tel(Concat3, input1, input3); Console.WriteLine(); Tel(Concat1, input2, input3); Tel(Concat2, input2, input3); Tel(Concat3, input2, input3); Console.WriteLine(); Tel(Concat1, input1, input2, input3); Tel(Concat2, input1, input2, input3); Tel(Concat3, input1, input2, input3); Console.WriteLine(); Tel(Concat1, input1, input2, input3, input1, input2, input3); Tel(Concat2, input1, input2, input3, input1, input2, input3); Tel(Concat3, input1, input2, input3, input1, input2, input3); Console.WriteLine(); } static void Tel(Method m, params string[] input) { using (new Timer()) { m.Invoke(input); } } static void Concat1(params string[] input) { var arr = new string[cycles]; for(int i = 0; i < cycles; i++) { arr[i] = string.Concat(input); } } static void Concat2(params string[] input) { var arr = new string[cycles]; for (int i = 0; i < cycles; i++) { var sb = new StringBuilder(); foreach (string s in input) { sb.Append(s); } arr[i] = sb.ToString(); } } static void Concat3(params string[] input) { var arr = new string[cycles]; for (int i = 0; i < cycles; i++) { string e = string.Empty; foreach (string s in input) { e += s; } arr[i] = e; } } } public class Timer : IDisposable { private static readonly HighResTimer hrt; static Timer() { hrt = new HighResTimer(false); } public Timer() { hrt.Start(); } public void Dispose() { Console.WriteLine(hrt.GetElapsed()); } } }