|
using BenchmarkDotNet.Attributes; |
|
using BenchmarkDotNet.Running; |
|
|
|
namespace IshaFatima; |
|
|
|
internal class Program |
|
{ |
|
private static void Main(string[] args) |
|
{ |
|
var summary = BenchmarkRunner.Run<Benchmarks>(); |
|
} |
|
} |
|
|
|
[MemoryDiagnoser] |
|
public class Benchmarks |
|
{ |
|
[Benchmark(Baseline = true)] |
|
public void IfElseBenchmark() |
|
=> IfElse(Random.Shared.Next(63)); |
|
|
|
public static string IfElse(int roleId) |
|
{ |
|
if (roleId == 1) return "A"; |
|
else if (roleId == 2) return "B"; |
|
else if (roleId == 3) return "C"; |
|
else if (roleId == 4) return "D"; |
|
else if (roleId == 5) return "E"; |
|
else if (roleId == 6) return "F"; |
|
else if (roleId == 7) return "G"; |
|
else if (roleId == 8) return "H"; |
|
else if (roleId == 9) return "I"; |
|
else if (roleId == 10) return "J"; |
|
else if (roleId == 11) return "K"; |
|
else if (roleId == 12) return "L"; |
|
else if (roleId == 13) return "M"; |
|
else if (roleId == 14) return "N"; |
|
else if (roleId == 15) return "O"; |
|
else if (roleId == 16) return "P"; |
|
else if (roleId == 17) return "Q"; |
|
else if (roleId == 18) return "R"; |
|
else if (roleId == 19) return "S"; |
|
else if (roleId == 20) return "T"; |
|
else if (roleId == 21) return "U"; |
|
else if (roleId == 22) return "V"; |
|
else if (roleId == 23) return "W"; |
|
else if (roleId == 24) return "X"; |
|
else if (roleId == 25) return "Y"; |
|
else if (roleId == 26) return "Z"; |
|
else if (roleId == 27) return "a"; |
|
else if (roleId == 28) return "b"; |
|
else if (roleId == 29) return "c"; |
|
else if (roleId == 30) return "d"; |
|
else if (roleId == 31) return "e"; |
|
else if (roleId == 32) return "f"; |
|
else if (roleId == 33) return "g"; |
|
else if (roleId == 34) return "h"; |
|
else if (roleId == 35) return "i"; |
|
else if (roleId == 36) return "j"; |
|
else if (roleId == 37) return "k"; |
|
else if (roleId == 38) return "l"; |
|
else if (roleId == 39) return "m"; |
|
else if (roleId == 40) return "n"; |
|
else if (roleId == 41) return "o"; |
|
else if (roleId == 42) return "p"; |
|
else if (roleId == 43) return "q"; |
|
else if (roleId == 44) return "r"; |
|
else if (roleId == 45) return "s"; |
|
else if (roleId == 46) return "t"; |
|
else if (roleId == 47) return "u"; |
|
else if (roleId == 48) return "v"; |
|
else if (roleId == 49) return "w"; |
|
else if (roleId == 50) return "x"; |
|
else if (roleId == 51) return "y"; |
|
else if (roleId == 52) return "z"; |
|
else if (roleId == 53) return "0"; |
|
else if (roleId == 54) return "1"; |
|
else if (roleId == 55) return "2"; |
|
else if (roleId == 56) return "3"; |
|
else if (roleId == 57) return "4"; |
|
else if (roleId == 58) return "5"; |
|
else if (roleId == 59) return "6"; |
|
else if (roleId == 60) return "7"; |
|
else if (roleId == 61) return "8"; |
|
else if (roleId == 62) return "9"; |
|
return "Unknown"; |
|
} |
|
|
|
[Benchmark] |
|
public void SwitchExpressionBenchmark() |
|
=> SwitchExpression(Random.Shared.Next(63)); |
|
|
|
public static string SwitchExpression(int roleId) |
|
=> roleId switch |
|
{ |
|
1 => "A", |
|
2 => "B", |
|
3 => "C", |
|
4 => "D", |
|
5 => "E", |
|
6 => "F", |
|
7 => "G", |
|
8 => "H", |
|
9 => "I", |
|
10 => "J", |
|
11 => "K", |
|
12 => "L", |
|
13 => "M", |
|
14 => "N", |
|
15 => "O", |
|
16 => "P", |
|
17 => "Q", |
|
18 => "R", |
|
19 => "S", |
|
20 => "T", |
|
21 => "U", |
|
22 => "V", |
|
23 => "W", |
|
24 => "X", |
|
25 => "Y", |
|
26 => "Z", |
|
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 => "0", |
|
54 => "1", |
|
55 => "2", |
|
56 => "3", |
|
57 => "4", |
|
58 => "5", |
|
59 => "6", |
|
60 => "7", |
|
61 => "8", |
|
62 => "9", |
|
_ => "Unknown" |
|
}; |
|
|
|
[Benchmark] |
|
public void SwitchStatementBenchmark() |
|
=> SwitchStatement(Random.Shared.Next(63)); |
|
|
|
public static string SwitchStatement(int roleId) |
|
{ |
|
switch (roleId) |
|
{ |
|
case 1: return "A"; |
|
case 2: return "B"; |
|
case 3: return "C"; |
|
case 4: return "D"; |
|
case 5: return "E"; |
|
case 6: return "F"; |
|
case 7: return "G"; |
|
case 8: return "H"; |
|
case 9: return "I"; |
|
case 10: return "J"; |
|
case 11: return "K"; |
|
case 12: return "L"; |
|
case 13: return "M"; |
|
case 14: return "N"; |
|
case 15: return "O"; |
|
case 16: return "P"; |
|
case 17: return "Q"; |
|
case 18: return "R"; |
|
case 19: return "S"; |
|
case 20: return "T"; |
|
case 21: return "U"; |
|
case 22: return "V"; |
|
case 23: return "W"; |
|
case 24: return "X"; |
|
case 25: return "Y"; |
|
case 26: return "Z"; |
|
case 27: return "a"; |
|
case 28: return "b"; |
|
case 29: return "c"; |
|
case 30: return "d"; |
|
case 31: return "e"; |
|
case 32: return "f"; |
|
case 33: return "g"; |
|
case 34: return "h"; |
|
case 35: return "i"; |
|
case 36: return "j"; |
|
case 37: return "k"; |
|
case 38: return "l"; |
|
case 39: return "m"; |
|
case 40: return "n"; |
|
case 41: return "o"; |
|
case 42: return "p"; |
|
case 43: return "q"; |
|
case 44: return "r"; |
|
case 45: return "s"; |
|
case 46: return "t"; |
|
case 47: return "u"; |
|
case 48: return "v"; |
|
case 49: return "w"; |
|
case 50: return "x"; |
|
case 51: return "y"; |
|
case 52: return "z"; |
|
case 53: return "0"; |
|
case 54: return "1"; |
|
case 55: return "2"; |
|
case 56: return "3"; |
|
case 57: return "4"; |
|
case 58: return "5"; |
|
case 59: return "6"; |
|
case 60: return "7"; |
|
case 61: return "8"; |
|
case 62: return "9"; |
|
default: return "Unknown"; |
|
} |
|
} |
|
|
|
private static readonly Dictionary<int, string> _dictionary = new() |
|
{ |
|
{ 1, "A" }, { 2, "B" }, { 3, "C" }, { 4, "D" }, { 5, "E" }, |
|
{ 6, "F" }, { 7, "G" }, { 8, "H" }, { 9, "I" }, { 10, "J" }, |
|
{ 11, "K" }, { 12, "L" }, { 13, "M" }, { 14, "N" }, { 15, "O" }, |
|
{ 16, "P" }, { 17, "Q" }, { 18, "R" }, { 19, "S" }, { 20, "T" }, |
|
{ 21, "U" }, { 22, "V" }, { 23, "W" }, { 24, "X" }, { 25, "Y" }, |
|
{ 26, "Z" }, { 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, "0" }, { 54, "1" }, { 55, "2" }, |
|
{ 56, "3" }, { 57, "4" }, { 58, "5" }, { 59, "6" }, { 60, "7" }, |
|
{ 61, "8" }, { 62, "9" } |
|
}; |
|
|
|
[Benchmark] |
|
public void DictionaryBenchmark() |
|
=> Dictionary(Random.Shared.Next(63)); |
|
|
|
public static string Dictionary(int roleId) |
|
=> _dictionary.TryGetValue(roleId, out var role) ? role : "Unknown"; |
|
} |