DictionaryBenchmark.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using Jint.Collections;
  2. using BenchmarkDotNet.Attributes;
  3. namespace Jint.Benchmark
  4. {
  5. [MemoryDiagnoser]
  6. public class DictionaryBenchmark
  7. {
  8. private static readonly string[] _keys =
  9. {
  10. "some",
  11. "key and",
  12. "another",
  13. "varying",
  14. "---the --",
  15. "keys and more",
  16. "aa bbb",
  17. "asasd asd ",
  18. "asdsad asd as s",
  19. "asdadsasa",
  20. "23323232323",
  21. "asdadsada sa213"
  22. };
  23. [Params(0, 2, 3, 5, 8, 9, 10)]
  24. public int N { get; set; }
  25. [Benchmark]
  26. public void HybridDictionary()
  27. {
  28. var hybridDictionary = new HybridDictionary<object>();
  29. for (var i = 0; i < N; i++)
  30. {
  31. hybridDictionary.Add(_keys[i], _keys);
  32. }
  33. foreach (var key in _keys)
  34. {
  35. hybridDictionary.ContainsKey(key);
  36. }
  37. }
  38. [Benchmark]
  39. public void Dictionary()
  40. {
  41. var dictionary = new Dictionary<string, object>();
  42. for (var i = 0; i < N; i++)
  43. {
  44. dictionary.Add(_keys[i], _keys);
  45. }
  46. foreach (var key in _keys)
  47. {
  48. dictionary.ContainsKey(key);
  49. }
  50. }
  51. [Benchmark]
  52. public void StringDictionarySlim()
  53. {
  54. var dictionary = new StringDictionarySlim<object>();
  55. for (var i = 0; i < N; i++)
  56. {
  57. dictionary[_keys[i]] =_keys;
  58. }
  59. foreach (var key in _keys)
  60. {
  61. dictionary.ContainsKey(key);
  62. }
  63. }
  64. }
  65. }