DictionaryBenchmark.cs 1.7 KB

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