using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace dictionary_vs_switch
{
class Program
{
static void Main()
{
char[] fromArr = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (char)i).ToArray();
char[] iterArr = new char[10000];
Random r = new Random();
for (int i = 0; i < iterArr.Length; i++)
{
iterArr[i] = fromArr[r.Next(fromArr.Length)];
}
var result1 = new StringBuilder(iterArr.Length);
var result2 = new StringBuilder(iterArr.Length);
Stopwatch s1 = new Stopwatch();
Stopwatch s2 = new Stopwatch();
s1.Start();
Dictionary<char, char> d = new Dictionary<char, char>
{
{'a', 'а'},
{'b', 'б'},
{'c', 'ц'},
{'d', 'д'},
{'e', 'е'},
{'f', 'ф'},
{'g', 'г'},
{'h', 'ш'},
{'i', 'и'},
{'j', 'й'},
{'k', 'к'},
{'l', 'л'},
{'m', 'м'},
{'n', 'н'},
{'o', 'о'},
{'p', 'п'},
{'q', 'ы'},
{'r', 'р'},
{'s', 'с'},
{'t', 'т'},
{'u', 'у'},
{'v', 'в'},
{'w', 'ю'},
{'x', 'ч'},
{'y', 'я'},
{'z', 'з'}
};
foreach (char c in iterArr)
{
result1.Append(d[c]);
}
s1.Stop();
s2.Start();
foreach (char c in iterArr)
{
result2.Append(getChar(c));
}
s2.Stop();
Console.WriteLine("dictionary: " + s1.ElapsedTicks);
Console.WriteLine("switch: " + s2.ElapsedTicks);
Console.ReadKey();
}
private static char getChar(char c)
{
switch (c)
{
case 'a': return 'а';
case 'b': return 'б';
case 'c': return 'ц';
case 'd': return 'д';
case 'e': return 'е';
case 'f': return 'ф';
case 'g': return 'г';
case 'h': return 'ш';
case 'i': return 'и';
case 'j': return 'й';
case 'k': return 'к';
case 'l': return 'л';
case 'm': return 'м';
case 'n': return 'н';
case 'o': return 'о';
case 'p': return 'п';
case 'q': return 'ы';
case 'r': return 'р';
case 's': return 'с';
case 't': return 'т';
case 'u': return 'у';
case 'v': return 'в';
case 'w': return 'ю';
case 'x': return 'ч';
case 'y': return 'я';
case 'z': return 'з';
default: return ' ';
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQ7CgpuYW1lc3BhY2UgZGljdGlvbmFyeV92c19zd2l0Y2gKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgY2hhcltdIGZyb21BcnIgPSBFbnVtZXJhYmxlLlJhbmdlKCdhJywgJ3onIC0gJ2EnICsgMSkuU2VsZWN0KGkgPT4gKGNoYXIpaSkuVG9BcnJheSgpOwogICAgICAgICAgICBjaGFyW10gaXRlckFyciA9IG5ldyBjaGFyWzEwMDAwXTsKICAgICAgICAgICAgUmFuZG9tIHIgPSBuZXcgUmFuZG9tKCk7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlckFyci5MZW5ndGg7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaXRlckFycltpXSA9IGZyb21BcnJbci5OZXh0KGZyb21BcnIuTGVuZ3RoKV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHJlc3VsdDEgPSBuZXcgU3RyaW5nQnVpbGRlcihpdGVyQXJyLkxlbmd0aCk7CiAgICAgICAgICAgIHZhciByZXN1bHQyID0gbmV3IFN0cmluZ0J1aWxkZXIoaXRlckFyci5MZW5ndGgpOwogICAgICAgICAgICBTdG9wd2F0Y2ggczEgPSBuZXcgU3RvcHdhdGNoKCk7CiAgICAgICAgICAgIFN0b3B3YXRjaCBzMiA9IG5ldyBTdG9wd2F0Y2goKTsKCiAgICAgICAgICAgIHMxLlN0YXJ0KCk7CgogICAgICAgICAgICBEaWN0aW9uYXJ5PGNoYXIsIGNoYXI+IGQgPSBuZXcgRGljdGlvbmFyeTxjaGFyLCBjaGFyPgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHsnYScsICfQsCd9LAogICAgICAgICAgICAgICAgICAgIHsnYicsICfQsSd9LAogICAgICAgICAgICAgICAgICAgIHsnYycsICfRhid9LAogICAgICAgICAgICAgICAgICAgIHsnZCcsICfQtCd9LAogICAgICAgICAgICAgICAgICAgIHsnZScsICfQtSd9LAogICAgICAgICAgICAgICAgICAgIHsnZicsICfRhCd9LAogICAgICAgICAgICAgICAgICAgIHsnZycsICfQsyd9LAogICAgICAgICAgICAgICAgICAgIHsnaCcsICfRiCd9LAogICAgICAgICAgICAgICAgICAgIHsnaScsICfQuCd9LAogICAgICAgICAgICAgICAgICAgIHsnaicsICfQuSd9LAogICAgICAgICAgICAgICAgICAgIHsnaycsICfQuid9LAogICAgICAgICAgICAgICAgICAgIHsnbCcsICfQuyd9LAogICAgICAgICAgICAgICAgICAgIHsnbScsICfQvCd9LAogICAgICAgICAgICAgICAgICAgIHsnbicsICfQvSd9LAogICAgICAgICAgICAgICAgICAgIHsnbycsICfQvid9LAogICAgICAgICAgICAgICAgICAgIHsncCcsICfQvyd9LAogICAgICAgICAgICAgICAgICAgIHsncScsICfRiyd9LAogICAgICAgICAgICAgICAgICAgIHsncicsICfRgCd9LAogICAgICAgICAgICAgICAgICAgIHsncycsICfRgSd9LAogICAgICAgICAgICAgICAgICAgIHsndCcsICfRgid9LAogICAgICAgICAgICAgICAgICAgIHsndScsICfRgyd9LAogICAgICAgICAgICAgICAgICAgIHsndicsICfQsid9LAogICAgICAgICAgICAgICAgICAgIHsndycsICfRjid9LAogICAgICAgICAgICAgICAgICAgIHsneCcsICfRhyd9LAogICAgICAgICAgICAgICAgICAgIHsneScsICfRjyd9LAogICAgICAgICAgICAgICAgICAgIHsneicsICfQtyd9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBmb3JlYWNoIChjaGFyIGMgaW4gaXRlckFycikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0MS5BcHBlbmQoZFtjXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgczEuU3RvcCgpOwogICAgICAgICAgICBzMi5TdGFydCgpOwogICAgICAgICAgICBmb3JlYWNoIChjaGFyIGMgaW4gaXRlckFycikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0Mi5BcHBlbmQoZ2V0Q2hhcihjKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgczIuU3RvcCgpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiZGljdGlvbmFyeTogIiArIHMxLkVsYXBzZWRUaWNrcyk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJzd2l0Y2g6ICAgICAiICsgczIuRWxhcHNlZFRpY2tzKTsKICAgICAgICAgICAgQ29uc29sZS5SZWFkS2V5KCk7CgogICAgICAgIH0KCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2hhciBnZXRDaGFyKGNoYXIgYykKICAgICAgICB7CiAgICAgICAgICAgIHN3aXRjaCAoYykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2FzZSAnYSc6IHJldHVybiAn0LAnOwogICAgICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAn0LEnOwogICAgICAgICAgICAgICAgY2FzZSAnYyc6IHJldHVybiAn0YYnOwogICAgICAgICAgICAgICAgY2FzZSAnZCc6IHJldHVybiAn0LQnOwogICAgICAgICAgICAgICAgY2FzZSAnZSc6IHJldHVybiAn0LUnOwogICAgICAgICAgICAgICAgY2FzZSAnZic6IHJldHVybiAn0YQnOwogICAgICAgICAgICAgICAgY2FzZSAnZyc6IHJldHVybiAn0LMnOwogICAgICAgICAgICAgICAgY2FzZSAnaCc6IHJldHVybiAn0YgnOwogICAgICAgICAgICAgICAgY2FzZSAnaSc6IHJldHVybiAn0LgnOwogICAgICAgICAgICAgICAgY2FzZSAnaic6IHJldHVybiAn0LknOwogICAgICAgICAgICAgICAgY2FzZSAnayc6IHJldHVybiAn0LonOwogICAgICAgICAgICAgICAgY2FzZSAnbCc6IHJldHVybiAn0LsnOwogICAgICAgICAgICAgICAgY2FzZSAnbSc6IHJldHVybiAn0LwnOwogICAgICAgICAgICAgICAgY2FzZSAnbic6IHJldHVybiAn0L0nOwogICAgICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiAn0L4nOwogICAgICAgICAgICAgICAgY2FzZSAncCc6IHJldHVybiAn0L8nOwogICAgICAgICAgICAgICAgY2FzZSAncSc6IHJldHVybiAn0YsnOwogICAgICAgICAgICAgICAgY2FzZSAncic6IHJldHVybiAn0YAnOwogICAgICAgICAgICAgICAgY2FzZSAncyc6IHJldHVybiAn0YEnOwogICAgICAgICAgICAgICAgY2FzZSAndCc6IHJldHVybiAn0YInOwogICAgICAgICAgICAgICAgY2FzZSAndSc6IHJldHVybiAn0YMnOwogICAgICAgICAgICAgICAgY2FzZSAndic6IHJldHVybiAn0LInOwogICAgICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAn0Y4nOwogICAgICAgICAgICAgICAgY2FzZSAneCc6IHJldHVybiAn0YcnOwogICAgICAgICAgICAgICAgY2FzZSAneSc6IHJldHVybiAn0Y8nOwogICAgICAgICAgICAgICAgY2FzZSAneic6IHJldHVybiAn0LcnOwogICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuICcgJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICB9Cn0K