fork download
  1. using System;
  2. using System.Diagnostics;
  3. using System.Linq;
  4. using System.Runtime.CompilerServices;
  5.  
  6. namespace ConsoleApplication85
  7. {
  8. class Program
  9. {
  10. static void Main()
  11. {
  12. int n = 100000;
  13. var results1 = new long[10];
  14. var results2 = new long[10];
  15. for (int i = 0; i < results1.Length; i++)
  16. {
  17. results1[i] = Test(0, n, Concat);
  18. results2[i] = Test(n, n, Insert);
  19. }
  20. Console.WriteLine("Concat = {0}{2}Insert = {1}", results1.Average(), results2.Average(), Environment.NewLine);
  21. Console.ReadKey();
  22. }
  23.  
  24. private static long Test(int start, int n, Func<string,string,string> func)
  25. {
  26. var sw = Stopwatch.StartNew();
  27. var strings = new string[n];
  28. for (int i = 0, j = start; i < strings.Length; i++, j++)
  29. {
  30. strings[i] = func(j.ToString(), j.ToString());
  31. }
  32. sw.Stop();
  33. GC.Collect();
  34. GC.WaitForPendingFinalizers();
  35. GC.Collect();
  36. return sw.ElapsedMilliseconds;
  37. }
  38.  
  39. [MethodImpl(MethodImplOptions.NoInlining)]
  40. private static string Concat(string a, string b)
  41. {
  42. return a + b;
  43. }
  44.  
  45. [MethodImpl(MethodImplOptions.NoInlining)]
  46. private static string Insert(string a, string b)
  47. {
  48. return b.Insert(0, a);
  49. }
  50. }
  51. }
  52.  
Success #stdin #stdout 1.18s 42664KB
stdin
Standard input is empty
stdout
Concat = 50.3
Insert = 54