2
0

DictionaryBenchmark.cs 1.5 KB

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