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. Dictionary<char, char> d = new Dictionary<char, char>
  26. {
  27. {'a', 'а'},
  28. {'b', 'б'},
  29. {'c', 'ц'},
  30. {'d', 'д'},
  31. {'e', 'е'},
  32. {'f', 'ф'},
  33. {'g', 'г'},
  34. {'h', 'ш'},
  35. {'i', 'и'},
  36. {'j', 'й'},
  37. {'k', 'к'},
  38. {'l', 'л'},
  39. {'m', 'м'},
  40. {'n', 'н'},
  41. {'o', 'о'},
  42. {'p', 'п'},
  43. {'q', 'ы'},
  44. {'r', 'р'},
  45. {'s', 'с'},
  46. {'t', 'т'},
  47. {'u', 'у'},
  48. {'v', 'в'},
  49. {'w', 'ю'},
  50. {'x', 'ч'},
  51. {'y', 'я'},
  52. {'z', 'з'}
  53. };
  54.  
  55. s1.Start();
  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. }
Success #stdin #stdout 0.05s 34256KB
stdin
Standard input is empty
stdout
dictionary: 9854
switch:     4229