data-structure-typed 2.2.7 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/.github/workflows/ci.yml +9 -0
  2. package/CHANGELOG.md +1 -1
  3. package/README.md +14 -3
  4. package/README_CN.md +119 -275
  5. package/benchmark/report.html +1 -1
  6. package/benchmark/report.json +20 -324
  7. package/dist/cjs/index.cjs +689 -182
  8. package/dist/cjs/index.cjs.map +1 -1
  9. package/dist/cjs-legacy/index.cjs +693 -185
  10. package/dist/cjs-legacy/index.cjs.map +1 -1
  11. package/dist/esm/index.mjs +689 -182
  12. package/dist/esm/index.mjs.map +1 -1
  13. package/dist/esm-legacy/index.mjs +693 -185
  14. package/dist/esm-legacy/index.mjs.map +1 -1
  15. package/dist/leetcode/avl-tree-counter.mjs +2957 -0
  16. package/dist/leetcode/avl-tree-multi-map.mjs +2889 -0
  17. package/dist/leetcode/avl-tree.mjs +2720 -0
  18. package/dist/leetcode/binary-tree.mjs +1594 -0
  19. package/dist/leetcode/bst.mjs +2398 -0
  20. package/dist/leetcode/deque.mjs +683 -0
  21. package/dist/leetcode/directed-graph.mjs +1733 -0
  22. package/dist/leetcode/doubly-linked-list.mjs +709 -0
  23. package/dist/leetcode/hash-map.mjs +493 -0
  24. package/dist/leetcode/heap.mjs +542 -0
  25. package/dist/leetcode/max-heap.mjs +375 -0
  26. package/dist/leetcode/max-priority-queue.mjs +383 -0
  27. package/dist/leetcode/min-heap.mjs +363 -0
  28. package/dist/leetcode/min-priority-queue.mjs +371 -0
  29. package/dist/leetcode/priority-queue.mjs +363 -0
  30. package/dist/leetcode/queue.mjs +943 -0
  31. package/dist/leetcode/red-black-tree.mjs +2765 -0
  32. package/dist/leetcode/singly-linked-list.mjs +754 -0
  33. package/dist/leetcode/stack.mjs +217 -0
  34. package/dist/leetcode/tree-counter.mjs +3039 -0
  35. package/dist/leetcode/tree-multi-map.mjs +2913 -0
  36. package/dist/leetcode/trie.mjs +413 -0
  37. package/dist/leetcode/undirected-graph.mjs +1650 -0
  38. package/dist/types/data-structures/base/linear-base.d.ts +6 -6
  39. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +1 -1
  40. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -2
  41. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +10 -10
  42. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +25 -27
  43. package/dist/types/data-structures/binary-tree/bst.d.ts +13 -12
  44. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +151 -21
  45. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +4 -4
  46. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  47. package/dist/types/interfaces/binary-tree.d.ts +1 -1
  48. package/dist/umd/data-structure-typed.js +689 -181
  49. package/dist/umd/data-structure-typed.js.map +1 -1
  50. package/dist/umd/data-structure-typed.min.js +3 -3
  51. package/dist/umd/data-structure-typed.min.js.map +1 -1
  52. package/package.json +50 -172
  53. package/src/data-structures/base/linear-base.ts +2 -12
  54. package/src/data-structures/binary-tree/avl-tree-counter.ts +6 -6
  55. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +13 -13
  56. package/src/data-structures/binary-tree/avl-tree.ts +15 -15
  57. package/src/data-structures/binary-tree/binary-tree.ts +57 -60
  58. package/src/data-structures/binary-tree/bst.ts +100 -26
  59. package/src/data-structures/binary-tree/red-black-tree.ts +586 -76
  60. package/src/data-structures/binary-tree/tree-counter.ts +25 -13
  61. package/src/data-structures/binary-tree/tree-multi-map.ts +13 -13
  62. package/src/data-structures/queue/deque.ts +10 -0
  63. package/src/interfaces/binary-tree.ts +1 -1
  64. package/test/performance/data-structures/binary-tree/red-black-tree.test.ts +1 -2
  65. package/test/unit/data-structures/base/iterable-element-base.coverage.test.ts +106 -0
  66. package/test/unit/data-structures/base/iterable-element-base.more-branches.coverage.test.ts +61 -0
  67. package/test/unit/data-structures/base/linear-base.array.coverage.test.ts +168 -0
  68. package/test/unit/data-structures/base/linear-base.concat-else.coverage.test.ts +82 -0
  69. package/test/unit/data-structures/base/linear-base.coverage.test.ts +72 -0
  70. package/test/unit/data-structures/base/linear-base.more-branches.coverage.test.ts +417 -0
  71. package/test/unit/data-structures/binary-tree/avl-tree-counter.more-branches-3.coverage.test.ts +146 -0
  72. package/test/unit/data-structures/binary-tree/avl-tree-counter.more-branches.coverage.test.ts +93 -0
  73. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +30 -30
  74. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.coverage.test.ts +108 -0
  75. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.more-branches-2.coverage.test.ts +85 -0
  76. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +46 -46
  77. package/test/unit/data-structures/binary-tree/avl-tree-node.familyPosition-root-left.coverage.test.ts +17 -0
  78. package/test/unit/data-structures/binary-tree/avl-tree.more-branches-2.coverage.test.ts +99 -0
  79. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +43 -43
  80. package/test/unit/data-structures/binary-tree/binary-indexed-tree.more-branches.coverage.test.ts +18 -0
  81. package/test/unit/data-structures/binary-tree/binary-tree.more-branches.coverage.test.ts +56 -0
  82. package/test/unit/data-structures/binary-tree/binary-tree.remaining-branches.coverage.test.ts +229 -0
  83. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +151 -151
  84. package/test/unit/data-structures/binary-tree/bst.bound-by-predicate.coverage.test.ts +33 -0
  85. package/test/unit/data-structures/binary-tree/bst.coverage.test.ts +94 -0
  86. package/test/unit/data-structures/binary-tree/bst.deletebykey.coverage.test.ts +70 -0
  87. package/test/unit/data-structures/binary-tree/bst.deletewhere.coverage.test.ts +37 -0
  88. package/test/unit/data-structures/binary-tree/bst.floor-lower-predicate.coverage.test.ts +29 -0
  89. package/test/unit/data-structures/binary-tree/bst.floor-setmany.coverage.test.ts +72 -0
  90. package/test/unit/data-structures/binary-tree/bst.getnode.range-ensure.coverage.test.ts +22 -0
  91. package/test/unit/data-structures/binary-tree/bst.misc-branches.coverage.test.ts +100 -0
  92. package/test/unit/data-structures/binary-tree/bst.more-branches-2.coverage.test.ts +133 -0
  93. package/test/unit/data-structures/binary-tree/bst.more-branches-3.coverage.test.ts +45 -0
  94. package/test/unit/data-structures/binary-tree/bst.more-branches-4.coverage.test.ts +36 -0
  95. package/test/unit/data-structures/binary-tree/bst.more-branches-5.coverage.test.ts +40 -0
  96. package/test/unit/data-structures/binary-tree/bst.more.coverage.test.ts +39 -0
  97. package/test/unit/data-structures/binary-tree/bst.node-family.coverage.test.ts +29 -0
  98. package/test/unit/data-structures/binary-tree/bst.range-pruning.coverage.test.ts +43 -0
  99. package/test/unit/data-structures/binary-tree/bst.search-fastpath.coverage.test.ts +30 -0
  100. package/test/unit/data-structures/binary-tree/bst.test.ts +124 -154
  101. package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
  102. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-corruption-repair.coverage.test.ts +66 -0
  103. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-max-update.coverage.test.ts +18 -0
  104. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-null.coverage.test.ts +53 -0
  105. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-stale-cache.coverage.test.ts +25 -0
  106. package/test/unit/data-structures/binary-tree/red-black-tree.boundary-update.coverage.test.ts +23 -0
  107. package/test/unit/data-structures/binary-tree/red-black-tree.cache-delete.coverage.test.ts +49 -0
  108. package/test/unit/data-structures/binary-tree/red-black-tree.cache-edge.coverage.test.ts +37 -0
  109. package/test/unit/data-structures/binary-tree/red-black-tree.cache-stale-insert.coverage.test.ts +39 -0
  110. package/test/unit/data-structures/binary-tree/red-black-tree.coverage.test.ts +334 -0
  111. package/test/unit/data-structures/binary-tree/red-black-tree.delete-fixup.coverage.test.ts +68 -0
  112. package/test/unit/data-structures/binary-tree/red-black-tree.delete-successor.coverage.test.ts +75 -0
  113. package/test/unit/data-structures/binary-tree/red-black-tree.factories.coverage.test.ts +26 -0
  114. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-compare-update.coverage.test.ts +74 -0
  115. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-no-update.coverage.test.ts +44 -0
  116. package/test/unit/data-structures/binary-tree/red-black-tree.hint-cache-nullish.coverage.test.ts +61 -0
  117. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-defined.coverage.test.ts +35 -0
  118. package/test/unit/data-structures/binary-tree/red-black-tree.hint-mapmode-undefined.coverage.test.ts +43 -0
  119. package/test/unit/data-structures/binary-tree/red-black-tree.hint-more.coverage.test.ts +99 -0
  120. package/test/unit/data-structures/binary-tree/red-black-tree.hint.coverage.test.ts +60 -0
  121. package/test/unit/data-structures/binary-tree/red-black-tree.insert-cache-nullish.coverage.test.ts +29 -0
  122. package/test/unit/data-structures/binary-tree/red-black-tree.insert-header-parent-nullish.coverage.test.ts +17 -0
  123. package/test/unit/data-structures/binary-tree/red-black-tree.internal-walk.coverage.test.ts +57 -0
  124. package/test/unit/data-structures/binary-tree/red-black-tree.minmax-cache.test.ts +65 -0
  125. package/test/unit/data-structures/binary-tree/red-black-tree.misc-inputs.coverage.test.ts +17 -0
  126. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-2.coverage.test.ts +121 -0
  127. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-3.coverage.test.ts +55 -0
  128. package/test/unit/data-structures/binary-tree/red-black-tree.more-branches-4.coverage.test.ts +44 -0
  129. package/test/unit/data-structures/binary-tree/red-black-tree.predsucc.coverage.test.ts +40 -0
  130. package/test/unit/data-structures/binary-tree/red-black-tree.remaining-branches.coverage.test.ts +123 -0
  131. package/test/unit/data-structures/binary-tree/red-black-tree.set-inputs.coverage.test.ts +64 -0
  132. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-parent-cache.coverage.test.ts +79 -0
  133. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-remaining.coverage.test.ts +44 -0
  134. package/test/unit/data-structures/binary-tree/red-black-tree.setkvnode-uncovered.coverage.test.ts +74 -0
  135. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +141 -141
  136. package/test/unit/data-structures/binary-tree/red-black-tree.update-branches.coverage.test.ts +30 -0
  137. package/test/unit/data-structures/binary-tree/segment-tree.more-branches.coverage.test.ts +31 -0
  138. package/test/unit/data-structures/binary-tree/tree-counter.coverage.test.ts +115 -0
  139. package/test/unit/data-structures/binary-tree/tree-counter.more-branches.coverage.test.ts +244 -0
  140. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +41 -39
  141. package/test/unit/data-structures/binary-tree/tree-multi-map.coverage.test.ts +104 -0
  142. package/test/unit/data-structures/binary-tree/tree-multi-map.more-branches-2.coverage.test.ts +59 -0
  143. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +145 -145
  144. package/test/unit/data-structures/graph/abstract-graph.more-branches-2.coverage.test.ts +40 -0
  145. package/test/unit/data-structures/graph/abstract-graph.more-branches-3.coverage.test.ts +65 -0
  146. package/test/unit/data-structures/graph/abstract-graph.more-branches-4.coverage.test.ts +98 -0
  147. package/test/unit/data-structures/graph/abstract-graph.more-branches-5.coverage.test.ts +51 -0
  148. package/test/unit/data-structures/graph/abstract-graph.more-branches.coverage.test.ts +62 -0
  149. package/test/unit/data-structures/graph/directed-graph.more-branches-2.coverage.test.ts +38 -0
  150. package/test/unit/data-structures/graph/directed-graph.more-branches-3.coverage.test.ts +25 -0
  151. package/test/unit/data-structures/graph/directed-graph.more-branches.coverage.test.ts +82 -0
  152. package/test/unit/data-structures/graph/map-graph.more-branches.coverage.test.ts +22 -0
  153. package/test/unit/data-structures/graph/undirected-graph.more-branches-2.coverage.test.ts +35 -0
  154. package/test/unit/data-structures/graph/undirected-graph.more-branches.coverage.test.ts +87 -0
  155. package/test/unit/data-structures/hash/hash-map.more-branches.coverage.test.ts +64 -0
  156. package/test/unit/data-structures/hash/hash-map.toEntryFn-branch.coverage.test.ts +9 -0
  157. package/test/unit/data-structures/heap/heap.misc-branches.coverage.test.ts +110 -0
  158. package/test/unit/data-structures/heap/heap.remaining-branches.coverage.test.ts +22 -0
  159. package/test/unit/data-structures/heap/max-heap.coverage.test.ts +29 -0
  160. package/test/unit/data-structures/linked-list/doubly-linked-list.more-branches.coverage.test.ts +72 -0
  161. package/test/unit/data-structures/linked-list/linked-list.unshiftMany-else.coverage.test.ts +15 -0
  162. package/test/unit/data-structures/linked-list/singly-linked-list.coverage.test.ts +221 -0
  163. package/test/unit/data-structures/linked-list/singly-linked-list.more-branches.coverage.test.ts +86 -0
  164. package/test/unit/data-structures/linked-list/skip-linked-list.more-branches.coverage.test.ts +31 -0
  165. package/test/unit/data-structures/matrix/matrix.more-branches.coverage.test.ts +81 -0
  166. package/test/unit/data-structures/matrix/matrix.pivotElement-nullish.coverage.test.ts +28 -0
  167. package/test/unit/data-structures/priority-queue/max-priority-queue.more-branches.coverage.test.ts +10 -0
  168. package/test/unit/data-structures/priority-queue/priority-queue.coverage.test.ts +21 -0
  169. package/test/unit/data-structures/queue/deque.coverage.test.ts +173 -0
  170. package/test/unit/data-structures/queue/deque.more-branches-2.coverage.test.ts +39 -0
  171. package/test/unit/data-structures/queue/deque.more-branches-3.coverage.test.ts +9 -0
  172. package/test/unit/data-structures/queue/deque.more-branches.coverage.test.ts +95 -0
  173. package/test/unit/data-structures/queue/queue.coverage.test.ts +138 -0
  174. package/test/unit/data-structures/queue/queue.more-branches-2.coverage.test.ts +27 -0
  175. package/test/unit/data-structures/stack/stack.coverage.test.ts +112 -0
  176. package/test/unit/data-structures/tree/tree.more-branches.coverage.test.ts +9 -0
  177. package/test/unit/data-structures/trie/trie.more-branches-2.coverage.test.ts +51 -0
  178. package/test/utils/patch.ts +33 -0
  179. package/tsup.config.js +50 -21
  180. package/tsup.umd.config.js +29 -0
  181. package/tsup.node.config.js +0 -83
@@ -10,5 +10,5 @@
10
10
  .content table tr:nth-child(odd) { background:#fff; }
11
11
  </style></head><body><div class="content">
12
12
  <div class="json-to-html-title">Benchmark Report</div>
13
- <h2>red-black-tree</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 set</td><td>508.80</td><td>407.39</td><td>735.02</td><td>±16.47%</td></tr><tr><td>1,000,000 get</td><td>3.60</td><td>2.59</td><td>10.73</td><td>±12.76%</td></tr><tr><td>1,000,000 iterator</td><td>181.28</td><td>131.67</td><td>399.35</td><td>±21.13%</td></tr><tr><td>Competitor 1,000,000 set</td><td>657.36</td><td>646.08</td><td>668.05</td><td>±0.94%</td></tr><tr><td>Competitor 1,000,000 get</td><td>707.92</td><td>661.39</td><td>774.77</td><td>±4.43%</td></tr></tbody></table><h2>queue</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>26.83</td><td>21.26</td><td>67.52</td><td>±7.94%</td></tr><tr><td>100,000 push & shift</td><td>2.71</td><td>2.40</td><td>3.56</td><td>±1.99%</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>1214.60</td><td>1060.42</td><td>1423.06</td><td>±10.02%</td></tr></tbody></table><h2>deque</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>8.85</td><td>8.48</td><td>9.64</td><td>±0.50%</td></tr><tr><td>1,000,000 push & pop</td><td>13.52</td><td>13.02</td><td>14.76</td><td>±0.54%</td></tr><tr><td>1,000,000 push & shift</td><td>14.08</td><td>13.62</td><td>15.34</td><td>±0.51%</td></tr><tr><td>100,000 push & shift</td><td>1.35</td><td>1.31</td><td>1.44</td><td>±0.33%</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>1429.15</td><td>944.17</td><td>1975.05</td><td>±26.96%</td></tr><tr><td>100,000 unshift & shift</td><td>1.29</td><td>1.25</td><td>1.54</td><td>±0.68%</td></tr><tr><td>Native JS Array 100,000 unshift & shift</td><td>2200.25</td><td>1844.73</td><td>2839.30</td><td>±17.78%</td></tr></tbody></table><h2>heap</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100,000 add</td><td>4.70</td><td>4.36</td><td>5.15</td><td>±0.81%</td></tr><tr><td>100,000 add & poll</td><td>17.31</td><td>16.65</td><td>18.67</td><td0.57%</td></tr></tbody></table><h2>avl-tree</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100,000 set randomly</td><td>354.58</td><td>320.37</td><td>396.77</td><td>±5.90%</td></tr><tr><td>100,000 set</td><td>310.29</td><td>294.79</td><td>362.25</td><td>±4.57%</td></tr><tr><td>100,000 get</td><td>0.26</td><td>0.25</td><td>0.29</td><td>±0.44%</td></tr><tr><td>100,000 getNode</td><td>199.21</td><td>170.37</td><td>228.69</td><td>±4.40%</td></tr><tr><td>100,000 iterator</td><td>15.41</td><td>13.39</td><td>29.67</td><td>±4.05%</td></tr><tr><td>100,000 set & delete orderly</td><td>436.63</td><td>426.38</td><td>457.78</td><td>±1.52%</td></tr><tr><td>100,000 set & delete randomly</td><td>526.98</td><td>512.67</td><td>544.63</td><td>±1.87%</td></tr></tbody></table><h2>hash-map</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 set</td><td>40.68</td><td>33.35</td><td>59.21</td><td>±4.69%</td></tr><tr><td>Native JS Map 1,000,000 set</td><td>144.13</td><td>131.77</td><td>167.71</td><td>±3.43%</td></tr><tr><td>Native JS Set 1,000,000 add</td><td>112.65</td><td>104.13</td><td>148.36</td><td>±4.84%</td></tr><tr><td>1,000,000 set & get</td><td>45.40</td><td>36.83</td><td>57.24</td><td>±4.56%</td></tr><tr><td>Native JS Map 1,000,000 set & get</td><td>195.80</td><td>184.61</td><td>220.64</td><td>±3.12%</td></tr><tr><td>Native JS Set 1,000,000 add & has</td><td>159.47</td><td>148.45</td><td>196.09</td><td4.13%</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>239.09</td><td>210.63</td><td>272.97</td><td>±5.14%</td></tr><tr><td>Native JS Map 1,000,000 ObjKey set & get</td><td>207.48</td><td>181.81</td><td>240.56</td><td>±5.90%</td></tr><tr><td>Native JS Set 1,000,000 ObjKey add & has</td><td>188.86</td><td>162.40</td><td>246.83</td><td>±8.41%</td></tr></tbody></table><h2>directed-graph</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000 addVertex</td><td>0.05</td><td>0.04</td><td>0.05</td><td>±0.37%</td></tr><tr><td>1,000 addEdge</td><td>3.00</td><td>2.78</td><td>5.35</td><td>±2.48%</td></tr><tr><td>1,000 getVertex</td><td>0.04</td><td>0.04</td><td>0.04</td><td>±0.52%</td></tr><tr><td>1,000 getEdge</td><td>44.78</td><td>40.89</td><td>97.02</td><td>±5.62%</td></tr><tr><td>tarjan</td><td>241.55</td><td>235.87</td><td>269.07</td><td>±1.82%</td></tr><tr><td>topologicalSort</td><td>200.74</td><td>197.47</td><td>219.65</td><td>±1.30%</td></tr></tbody></table><h2>trie</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100,000 push</td><td>27.66</td><td>25.13</td><td>37.31</td><td>±1.98%</td></tr><tr><td>100,000 getWords</td><td>64.62</td><td>37.66</td><td>288.42</td><td>±29.56%</td></tr></tbody></table><h2>stack</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>26.57</td><td>22.36</td><td>33.50</td><td>±3.44%</td></tr><tr><td>1,000,000 push & pop</td><td>30.30</td><td>25.14</td><td>55.18</td><td>±4.78%</td></tr></tbody></table>
13
+ <h2>red-black-tree</h2><table><thead><tr><th>Test Case</th><th>Latency Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1,000,000 set</td><td>2544.36</td><td>2387.12</td><td>2869.15</td><td>±8.37%</td></tr><tr><td>1,000,000 get</td><td>54.20</td><td>52.66</td><td>72.16</td><td>±1.47%</td></tr><tr><td>1,000,000 iterator</td><td>484.95</td><td>470.10</td><td>542.07</td><td>±3.63%</td></tr><tr><td>Competitor 1,000,000 set</td><td>676.05</td><td>651.85</td><td>729.81</td><td>±4.07%</td></tr><tr><td>Competitor 1,000,000 get</td><td>682.61</td><td>675.91</td><td>699.91</td><td>±1.00%</td></tr></tbody></table>
14
14
  </div></body></html>
@@ -3,343 +3,39 @@
3
3
  "benchmarks": [
4
4
  {
5
5
  "Test Case": "1,000,000 set",
6
- "Latency Avg (ms)": "508.80",
7
- "Min (ms)": "407.39",
8
- "Max (ms)": "735.02",
9
- "Stability": "±16.47%"
6
+ "Latency Avg (ms)": "2544.36",
7
+ "Min (ms)": "2387.12",
8
+ "Max (ms)": "2869.15",
9
+ "Stability": "±8.37%"
10
10
  },
11
11
  {
12
12
  "Test Case": "1,000,000 get",
13
- "Latency Avg (ms)": "3.60",
14
- "Min (ms)": "2.59",
15
- "Max (ms)": "10.73",
16
- "Stability": "±12.76%"
13
+ "Latency Avg (ms)": "54.20",
14
+ "Min (ms)": "52.66",
15
+ "Max (ms)": "72.16",
16
+ "Stability": "±1.47%"
17
17
  },
18
18
  {
19
19
  "Test Case": "1,000,000 iterator",
20
- "Latency Avg (ms)": "181.28",
21
- "Min (ms)": "131.67",
22
- "Max (ms)": "399.35",
23
- "Stability": "±21.13%"
20
+ "Latency Avg (ms)": "484.95",
21
+ "Min (ms)": "470.10",
22
+ "Max (ms)": "542.07",
23
+ "Stability": "±3.63%"
24
24
  },
25
25
  {
26
26
  "Test Case": "Competitor 1,000,000 set",
27
- "Latency Avg (ms)": "657.36",
28
- "Min (ms)": "646.08",
29
- "Max (ms)": "668.05",
30
- "Stability": "±0.94%"
27
+ "Latency Avg (ms)": "676.05",
28
+ "Min (ms)": "651.85",
29
+ "Max (ms)": "729.81",
30
+ "Stability": "±4.07%"
31
31
  },
32
32
  {
33
33
  "Test Case": "Competitor 1,000,000 get",
34
- "Latency Avg (ms)": "707.92",
35
- "Min (ms)": "661.39",
36
- "Max (ms)": "774.77",
37
- "Stability": "±4.43%"
34
+ "Latency Avg (ms)": "682.61",
35
+ "Min (ms)": "675.91",
36
+ "Max (ms)": "699.91",
37
+ "Stability": "±1.00%"
38
38
  }
39
39
  ]
40
- },
41
- "queue": {
42
- "benchmarks": [
43
- {
44
- "Test Case": "1,000,000 push",
45
- "Latency Avg (ms)": "26.83",
46
- "Min (ms)": "21.26",
47
- "Max (ms)": "67.52",
48
- "Stability": "±7.94%"
49
- },
50
- {
51
- "Test Case": "100,000 push & shift",
52
- "Latency Avg (ms)": "2.71",
53
- "Min (ms)": "2.40",
54
- "Max (ms)": "3.56",
55
- "Stability": "±1.99%"
56
- },
57
- {
58
- "Test Case": "Native JS Array 100,000 push & shift",
59
- "Latency Avg (ms)": "1214.60",
60
- "Min (ms)": "1060.42",
61
- "Max (ms)": "1423.06",
62
- "Stability": "±10.02%"
63
- }
64
- ]
65
- },
66
- "deque": {
67
- "benchmarks": [
68
- {
69
- "Test Case": "1,000,000 push",
70
- "Latency Avg (ms)": "8.85",
71
- "Min (ms)": "8.48",
72
- "Max (ms)": "9.64",
73
- "Stability": "±0.50%"
74
- },
75
- {
76
- "Test Case": "1,000,000 push & pop",
77
- "Latency Avg (ms)": "13.52",
78
- "Min (ms)": "13.02",
79
- "Max (ms)": "14.76",
80
- "Stability": "±0.54%"
81
- },
82
- {
83
- "Test Case": "1,000,000 push & shift",
84
- "Latency Avg (ms)": "14.08",
85
- "Min (ms)": "13.62",
86
- "Max (ms)": "15.34",
87
- "Stability": "±0.51%"
88
- },
89
- {
90
- "Test Case": "100,000 push & shift",
91
- "Latency Avg (ms)": "1.35",
92
- "Min (ms)": "1.31",
93
- "Max (ms)": "1.44",
94
- "Stability": "±0.33%"
95
- },
96
- {
97
- "Test Case": "Native JS Array 100,000 push & shift",
98
- "Latency Avg (ms)": "1429.15",
99
- "Min (ms)": "944.17",
100
- "Max (ms)": "1975.05",
101
- "Stability": "±26.96%"
102
- },
103
- {
104
- "Test Case": "100,000 unshift & shift",
105
- "Latency Avg (ms)": "1.29",
106
- "Min (ms)": "1.25",
107
- "Max (ms)": "1.54",
108
- "Stability": "±0.68%"
109
- },
110
- {
111
- "Test Case": "Native JS Array 100,000 unshift & shift",
112
- "Latency Avg (ms)": "2200.25",
113
- "Min (ms)": "1844.73",
114
- "Max (ms)": "2839.30",
115
- "Stability": "±17.78%"
116
- }
117
- ]
118
- },
119
- "heap": {
120
- "benchmarks": [
121
- {
122
- "Test Case": "100,000 add",
123
- "Latency Avg (ms)": "4.70",
124
- "Min (ms)": "4.36",
125
- "Max (ms)": "5.15",
126
- "Stability": "±0.81%"
127
- },
128
- {
129
- "Test Case": "100,000 add & poll",
130
- "Latency Avg (ms)": "17.31",
131
- "Min (ms)": "16.65",
132
- "Max (ms)": "18.67",
133
- "Stability": "±0.57%"
134
- }
135
- ]
136
- },
137
- "avl-tree": {
138
- "benchmarks": [
139
- {
140
- "Test Case": "100,000 set randomly",
141
- "Latency Avg (ms)": "354.58",
142
- "Min (ms)": "320.37",
143
- "Max (ms)": "396.77",
144
- "Stability": "±5.90%"
145
- },
146
- {
147
- "Test Case": "100,000 set",
148
- "Latency Avg (ms)": "310.29",
149
- "Min (ms)": "294.79",
150
- "Max (ms)": "362.25",
151
- "Stability": "±4.57%"
152
- },
153
- {
154
- "Test Case": "100,000 get",
155
- "Latency Avg (ms)": "0.26",
156
- "Min (ms)": "0.25",
157
- "Max (ms)": "0.29",
158
- "Stability": "±0.44%"
159
- },
160
- {
161
- "Test Case": "100,000 getNode",
162
- "Latency Avg (ms)": "199.21",
163
- "Min (ms)": "170.37",
164
- "Max (ms)": "228.69",
165
- "Stability": "±4.40%"
166
- },
167
- {
168
- "Test Case": "100,000 iterator",
169
- "Latency Avg (ms)": "15.41",
170
- "Min (ms)": "13.39",
171
- "Max (ms)": "29.67",
172
- "Stability": "±4.05%"
173
- },
174
- {
175
- "Test Case": "100,000 set & delete orderly",
176
- "Latency Avg (ms)": "436.63",
177
- "Min (ms)": "426.38",
178
- "Max (ms)": "457.78",
179
- "Stability": "±1.52%"
180
- },
181
- {
182
- "Test Case": "100,000 set & delete randomly",
183
- "Latency Avg (ms)": "526.98",
184
- "Min (ms)": "512.67",
185
- "Max (ms)": "544.63",
186
- "Stability": "±1.87%"
187
- }
188
- ]
189
- },
190
- "hash-map": {
191
- "benchmarks": [
192
- {
193
- "Test Case": "1,000,000 set",
194
- "Latency Avg (ms)": "40.68",
195
- "Min (ms)": "33.35",
196
- "Max (ms)": "59.21",
197
- "Stability": "±4.69%"
198
- },
199
- {
200
- "Test Case": "Native JS Map 1,000,000 set",
201
- "Latency Avg (ms)": "144.13",
202
- "Min (ms)": "131.77",
203
- "Max (ms)": "167.71",
204
- "Stability": "±3.43%"
205
- },
206
- {
207
- "Test Case": "Native JS Set 1,000,000 add",
208
- "Latency Avg (ms)": "112.65",
209
- "Min (ms)": "104.13",
210
- "Max (ms)": "148.36",
211
- "Stability": "±4.84%"
212
- },
213
- {
214
- "Test Case": "1,000,000 set & get",
215
- "Latency Avg (ms)": "45.40",
216
- "Min (ms)": "36.83",
217
- "Max (ms)": "57.24",
218
- "Stability": "±4.56%"
219
- },
220
- {
221
- "Test Case": "Native JS Map 1,000,000 set & get",
222
- "Latency Avg (ms)": "195.80",
223
- "Min (ms)": "184.61",
224
- "Max (ms)": "220.64",
225
- "Stability": "±3.12%"
226
- },
227
- {
228
- "Test Case": "Native JS Set 1,000,000 add & has",
229
- "Latency Avg (ms)": "159.47",
230
- "Min (ms)": "148.45",
231
- "Max (ms)": "196.09",
232
- "Stability": "±4.13%"
233
- },
234
- {
235
- "Test Case": "1,000,000 ObjKey set & get",
236
- "Latency Avg (ms)": "239.09",
237
- "Min (ms)": "210.63",
238
- "Max (ms)": "272.97",
239
- "Stability": "±5.14%"
240
- },
241
- {
242
- "Test Case": "Native JS Map 1,000,000 ObjKey set & get",
243
- "Latency Avg (ms)": "207.48",
244
- "Min (ms)": "181.81",
245
- "Max (ms)": "240.56",
246
- "Stability": "±5.90%"
247
- },
248
- {
249
- "Test Case": "Native JS Set 1,000,000 ObjKey add & has",
250
- "Latency Avg (ms)": "188.86",
251
- "Min (ms)": "162.40",
252
- "Max (ms)": "246.83",
253
- "Stability": "±8.41%"
254
- }
255
- ]
256
- },
257
- "directed-graph": {
258
- "benchmarks": [
259
- {
260
- "Test Case": "1,000 addVertex",
261
- "Latency Avg (ms)": "0.05",
262
- "Min (ms)": "0.04",
263
- "Max (ms)": "0.05",
264
- "Stability": "±0.37%"
265
- },
266
- {
267
- "Test Case": "1,000 addEdge",
268
- "Latency Avg (ms)": "3.00",
269
- "Min (ms)": "2.78",
270
- "Max (ms)": "5.35",
271
- "Stability": "±2.48%"
272
- },
273
- {
274
- "Test Case": "1,000 getVertex",
275
- "Latency Avg (ms)": "0.04",
276
- "Min (ms)": "0.04",
277
- "Max (ms)": "0.04",
278
- "Stability": "±0.52%"
279
- },
280
- {
281
- "Test Case": "1,000 getEdge",
282
- "Latency Avg (ms)": "44.78",
283
- "Min (ms)": "40.89",
284
- "Max (ms)": "97.02",
285
- "Stability": "±5.62%"
286
- },
287
- {
288
- "Test Case": "tarjan",
289
- "Latency Avg (ms)": "241.55",
290
- "Min (ms)": "235.87",
291
- "Max (ms)": "269.07",
292
- "Stability": "±1.82%"
293
- },
294
- {
295
- "Test Case": "topologicalSort",
296
- "Latency Avg (ms)": "200.74",
297
- "Min (ms)": "197.47",
298
- "Max (ms)": "219.65",
299
- "Stability": "±1.30%"
300
- }
301
- ]
302
- },
303
- "bst": {
304
- "benchmarks": []
305
- },
306
- "trie": {
307
- "benchmarks": [
308
- {
309
- "Test Case": "100,000 push",
310
- "Latency Avg (ms)": "27.66",
311
- "Min (ms)": "25.13",
312
- "Max (ms)": "37.31",
313
- "Stability": "±1.98%"
314
- },
315
- {
316
- "Test Case": "100,000 getWords",
317
- "Latency Avg (ms)": "64.62",
318
- "Min (ms)": "37.66",
319
- "Max (ms)": "288.42",
320
- "Stability": "±29.56%"
321
- }
322
- ]
323
- },
324
- "stack": {
325
- "benchmarks": [
326
- {
327
- "Test Case": "1,000,000 push",
328
- "Latency Avg (ms)": "26.57",
329
- "Min (ms)": "22.36",
330
- "Max (ms)": "33.50",
331
- "Stability": "±3.44%"
332
- },
333
- {
334
- "Test Case": "1,000,000 push & pop",
335
- "Latency Avg (ms)": "30.30",
336
- "Min (ms)": "25.14",
337
- "Max (ms)": "55.18",
338
- "Stability": "±4.78%"
339
- }
340
- ]
341
- },
342
- "binary-tree": {
343
- "benchmarks": []
344
40
  }
345
41
  }