fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. namespace dictionary_vs_switch
  8. {
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. char[] fromArr = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (char)i).ToArray();
  14. char[] iterArr = new char[10000];
  15. Random r = new Random();
  16. for (int i = 0; i < iterArr.Length; i++)
  17. {
  18. iterArr[i] = fromArr[r.Next(fromArr.Length)];
  19. }
  20. var result1 = new StringBuilder(iterArr.Length);
  21. var result2 = new StringBuilder(iterArr.Length);
  22. Stopwatch s1 = new Stopwatch();
  23. Stopwatch s2 = new Stopwatch();
  24.  
  25. s1.Start();
  26.  
  27. Dictionary<char, char> d = new Dictionary<char, char>
  28. {
  29. {'a', 'а'},
  30. {'b', 'б'},
  31. {'c', 'ц'},
  32. {'d', 'д'},
  33. {'e', 'е'},
  34. {'f', 'ф'},
  35. {'g', 'г'},
  36. {'h', 'ш'},
  37. {'i', 'и'},
  38. {'j', 'й'},
  39. {'k', 'к'},
  40. {'l', 'л'},
  41. {'m', 'м'},
  42. {'n', 'н'},
  43. {'o', 'о'},
  44. {'p', 'п'},
  45. {'q', 'ы'},
  46. {'r', 'р'},
  47. {'s', 'с'},
  48. {'t', 'т'},
  49. {'u', 'у'},
  50. {'v', 'в'},
  51. {'w', 'ю'},
  52. {'x', 'ч'},
  53. {'y', 'я'},
  54. {'z', 'з'}
  55. };
  56. foreach (char c in iterArr)
  57. {
  58. result1.Append(d[c]);
  59. }
  60. s1.Stop();
  61. s2.Start();
  62. foreach (char c in iterArr)
  63. {
  64. result2.Append(getChar(c));
  65. }
  66. s2.Stop();
  67. Console.WriteLine("dictionary: " + s1.ElapsedTicks);
  68. Console.WriteLine("switch: " + s2.ElapsedTicks);
  69. Console.ReadKey();
  70.  
  71. }
  72.  
  73. private static char getChar(char c)
  74. {
  75. switch (c)
  76. {
  77. case 'a': return 'а';
  78. case 'b': return 'б';
  79. case 'c': return 'ц';
  80. case 'd': return 'д';
  81. case 'e': return 'е';
  82. case 'f': return 'ф';
  83. case 'g': return 'г';
  84. case 'h': return 'ш';
  85. case 'i': return 'и';
  86. case 'j': return 'й';
  87. case 'k': return 'к';
  88. case 'l': return 'л';
  89. case 'm': return 'м';
  90. case 'n': return 'н';
  91. case 'o': return 'о';
  92. case 'p': return 'п';
  93. case 'q': return 'ы';
  94. case 'r': return 'р';
  95. case 's': return 'с';
  96. case 't': return 'т';
  97. case 'u': return 'у';
  98. case 'v': return 'в';
  99. case 'w': return 'ю';
  100. case 'x': return 'ч';
  101. case 'y': return 'я';
  102. case 'z': return 'з';
  103. default: return ' ';
  104. }
  105.  
  106. }
  107. }
  108. }
  109.  
Success #stdin #stdout 0.05s 34248KB
stdin
Standard input is empty
stdout
dictionary: 126474
switch:     4240