data-structure-typed 2.0.5 → 2.1.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 (260) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/COMMANDS.md +17 -0
  3. package/benchmark/report.html +13 -77
  4. package/benchmark/report.json +145 -177
  5. package/dist/cjs/data-structures/base/iterable-element-base.d.ts +186 -83
  6. package/dist/cjs/data-structures/base/iterable-element-base.js +149 -107
  7. package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
  8. package/dist/cjs/data-structures/base/iterable-entry-base.d.ts +95 -119
  9. package/dist/cjs/data-structures/base/iterable-entry-base.js +59 -116
  10. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +1 -1
  11. package/dist/cjs/data-structures/base/linear-base.d.ts +250 -192
  12. package/dist/cjs/data-structures/base/linear-base.js +137 -274
  13. package/dist/cjs/data-structures/base/linear-base.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +126 -158
  15. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +171 -205
  16. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +100 -69
  18. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +135 -87
  19. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  20. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +138 -149
  21. package/dist/cjs/data-structures/binary-tree/avl-tree.js +208 -195
  22. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  23. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +476 -632
  24. package/dist/cjs/data-structures/binary-tree/binary-tree.js +594 -865
  25. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  26. package/dist/cjs/data-structures/binary-tree/bst.d.ts +258 -306
  27. package/dist/cjs/data-structures/binary-tree/bst.js +505 -481
  28. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  29. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +107 -179
  30. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +114 -209
  31. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  32. package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +132 -154
  33. package/dist/cjs/data-structures/binary-tree/tree-counter.js +172 -203
  34. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
  35. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +72 -69
  36. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +105 -85
  37. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  38. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +238 -233
  39. package/dist/cjs/data-structures/graph/abstract-graph.js +267 -237
  40. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  41. package/dist/cjs/data-structures/graph/directed-graph.d.ts +108 -224
  42. package/dist/cjs/data-structures/graph/directed-graph.js +146 -233
  43. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  44. package/dist/cjs/data-structures/graph/map-graph.d.ts +49 -55
  45. package/dist/cjs/data-structures/graph/map-graph.js +56 -59
  46. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  47. package/dist/cjs/data-structures/graph/undirected-graph.d.ts +103 -146
  48. package/dist/cjs/data-structures/graph/undirected-graph.js +129 -149
  49. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  50. package/dist/cjs/data-structures/hash/hash-map.d.ts +164 -338
  51. package/dist/cjs/data-structures/hash/hash-map.js +270 -457
  52. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  53. package/dist/cjs/data-structures/heap/heap.d.ts +214 -289
  54. package/dist/cjs/data-structures/heap/heap.js +340 -349
  55. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  56. package/dist/cjs/data-structures/heap/max-heap.d.ts +11 -47
  57. package/dist/cjs/data-structures/heap/max-heap.js +11 -66
  58. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  59. package/dist/cjs/data-structures/heap/min-heap.d.ts +12 -47
  60. package/dist/cjs/data-structures/heap/min-heap.js +11 -66
  61. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  62. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +231 -347
  63. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +368 -494
  64. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  65. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +261 -310
  66. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +447 -466
  67. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  68. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +0 -107
  69. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +0 -100
  70. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
  71. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +12 -56
  72. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +11 -78
  73. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  74. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +11 -57
  75. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +10 -79
  76. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  77. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -61
  78. package/dist/cjs/data-structures/priority-queue/priority-queue.js +8 -83
  79. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  80. package/dist/cjs/data-structures/queue/deque.d.ts +227 -254
  81. package/dist/cjs/data-structures/queue/deque.js +309 -348
  82. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  83. package/dist/cjs/data-structures/queue/queue.d.ts +180 -201
  84. package/dist/cjs/data-structures/queue/queue.js +265 -248
  85. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  86. package/dist/cjs/data-structures/stack/stack.d.ts +124 -102
  87. package/dist/cjs/data-structures/stack/stack.js +181 -125
  88. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  89. package/dist/cjs/data-structures/trie/trie.d.ts +164 -165
  90. package/dist/cjs/data-structures/trie/trie.js +189 -172
  91. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  92. package/dist/cjs/interfaces/binary-tree.d.ts +56 -6
  93. package/dist/cjs/interfaces/graph.d.ts +16 -0
  94. package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
  95. package/dist/cjs/types/data-structures/graph/abstract-graph.d.ts +4 -0
  96. package/dist/cjs/types/utils/utils.d.ts +1 -0
  97. package/dist/cjs/utils/utils.d.ts +1 -1
  98. package/dist/cjs/utils/utils.js +2 -1
  99. package/dist/cjs/utils/utils.js.map +1 -1
  100. package/dist/esm/data-structures/base/iterable-element-base.d.ts +186 -83
  101. package/dist/esm/data-structures/base/iterable-element-base.js +155 -107
  102. package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
  103. package/dist/esm/data-structures/base/iterable-entry-base.d.ts +95 -119
  104. package/dist/esm/data-structures/base/iterable-entry-base.js +59 -116
  105. package/dist/esm/data-structures/base/iterable-entry-base.js.map +1 -1
  106. package/dist/esm/data-structures/base/linear-base.d.ts +250 -192
  107. package/dist/esm/data-structures/base/linear-base.js +137 -274
  108. package/dist/esm/data-structures/base/linear-base.js.map +1 -1
  109. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +126 -158
  110. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +171 -212
  111. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  112. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +100 -69
  113. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +133 -94
  114. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  115. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +138 -149
  116. package/dist/esm/data-structures/binary-tree/avl-tree.js +206 -200
  117. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
  118. package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +476 -632
  119. package/dist/esm/data-structures/binary-tree/binary-tree.js +598 -874
  120. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
  121. package/dist/esm/data-structures/binary-tree/bst.d.ts +258 -306
  122. package/dist/esm/data-structures/binary-tree/bst.js +507 -487
  123. package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
  124. package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +107 -179
  125. package/dist/esm/data-structures/binary-tree/red-black-tree.js +114 -215
  126. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
  127. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +132 -154
  128. package/dist/esm/data-structures/binary-tree/tree-counter.js +175 -209
  129. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
  130. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +72 -69
  131. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +103 -92
  132. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  133. package/dist/esm/data-structures/graph/abstract-graph.d.ts +238 -233
  134. package/dist/esm/data-structures/graph/abstract-graph.js +267 -237
  135. package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
  136. package/dist/esm/data-structures/graph/directed-graph.d.ts +108 -224
  137. package/dist/esm/data-structures/graph/directed-graph.js +145 -233
  138. package/dist/esm/data-structures/graph/directed-graph.js.map +1 -1
  139. package/dist/esm/data-structures/graph/map-graph.d.ts +49 -55
  140. package/dist/esm/data-structures/graph/map-graph.js +56 -59
  141. package/dist/esm/data-structures/graph/map-graph.js.map +1 -1
  142. package/dist/esm/data-structures/graph/undirected-graph.d.ts +103 -146
  143. package/dist/esm/data-structures/graph/undirected-graph.js +128 -149
  144. package/dist/esm/data-structures/graph/undirected-graph.js.map +1 -1
  145. package/dist/esm/data-structures/hash/hash-map.d.ts +164 -338
  146. package/dist/esm/data-structures/hash/hash-map.js +270 -457
  147. package/dist/esm/data-structures/hash/hash-map.js.map +1 -1
  148. package/dist/esm/data-structures/heap/heap.d.ts +214 -289
  149. package/dist/esm/data-structures/heap/heap.js +329 -349
  150. package/dist/esm/data-structures/heap/heap.js.map +1 -1
  151. package/dist/esm/data-structures/heap/max-heap.d.ts +11 -47
  152. package/dist/esm/data-structures/heap/max-heap.js +11 -66
  153. package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
  154. package/dist/esm/data-structures/heap/min-heap.d.ts +12 -47
  155. package/dist/esm/data-structures/heap/min-heap.js +11 -66
  156. package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
  157. package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +231 -347
  158. package/dist/esm/data-structures/linked-list/doubly-linked-list.js +368 -495
  159. package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  160. package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +261 -310
  161. package/dist/esm/data-structures/linked-list/singly-linked-list.js +448 -467
  162. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
  163. package/dist/esm/data-structures/linked-list/skip-linked-list.d.ts +0 -107
  164. package/dist/esm/data-structures/linked-list/skip-linked-list.js +0 -100
  165. package/dist/esm/data-structures/linked-list/skip-linked-list.js.map +1 -1
  166. package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +12 -56
  167. package/dist/esm/data-structures/priority-queue/max-priority-queue.js +11 -78
  168. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  169. package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +11 -57
  170. package/dist/esm/data-structures/priority-queue/min-priority-queue.js +10 -79
  171. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  172. package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -61
  173. package/dist/esm/data-structures/priority-queue/priority-queue.js +8 -83
  174. package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
  175. package/dist/esm/data-structures/queue/deque.d.ts +227 -254
  176. package/dist/esm/data-structures/queue/deque.js +313 -348
  177. package/dist/esm/data-structures/queue/deque.js.map +1 -1
  178. package/dist/esm/data-structures/queue/queue.d.ts +180 -201
  179. package/dist/esm/data-structures/queue/queue.js +263 -248
  180. package/dist/esm/data-structures/queue/queue.js.map +1 -1
  181. package/dist/esm/data-structures/stack/stack.d.ts +124 -102
  182. package/dist/esm/data-structures/stack/stack.js +181 -125
  183. package/dist/esm/data-structures/stack/stack.js.map +1 -1
  184. package/dist/esm/data-structures/trie/trie.d.ts +164 -165
  185. package/dist/esm/data-structures/trie/trie.js +193 -172
  186. package/dist/esm/data-structures/trie/trie.js.map +1 -1
  187. package/dist/esm/interfaces/binary-tree.d.ts +56 -6
  188. package/dist/esm/interfaces/graph.d.ts +16 -0
  189. package/dist/esm/types/data-structures/base/base.d.ts +1 -1
  190. package/dist/esm/types/data-structures/graph/abstract-graph.d.ts +4 -0
  191. package/dist/esm/types/utils/utils.d.ts +1 -0
  192. package/dist/esm/utils/utils.d.ts +1 -1
  193. package/dist/esm/utils/utils.js +2 -1
  194. package/dist/esm/utils/utils.js.map +1 -1
  195. package/dist/umd/data-structure-typed.js +4685 -6477
  196. package/dist/umd/data-structure-typed.min.js +8 -6
  197. package/dist/umd/data-structure-typed.min.js.map +1 -1
  198. package/package.json +3 -4
  199. package/src/data-structures/base/iterable-element-base.ts +238 -115
  200. package/src/data-structures/base/iterable-entry-base.ts +96 -120
  201. package/src/data-structures/base/linear-base.ts +271 -277
  202. package/src/data-structures/binary-tree/avl-tree-counter.ts +198 -216
  203. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +192 -101
  204. package/src/data-structures/binary-tree/avl-tree.ts +239 -206
  205. package/src/data-structures/binary-tree/binary-tree.ts +660 -889
  206. package/src/data-structures/binary-tree/bst.ts +568 -570
  207. package/src/data-structures/binary-tree/red-black-tree.ts +161 -222
  208. package/src/data-structures/binary-tree/tree-counter.ts +199 -218
  209. package/src/data-structures/binary-tree/tree-multi-map.ts +131 -97
  210. package/src/data-structures/graph/abstract-graph.ts +339 -264
  211. package/src/data-structures/graph/directed-graph.ts +146 -236
  212. package/src/data-structures/graph/map-graph.ts +63 -60
  213. package/src/data-structures/graph/undirected-graph.ts +129 -152
  214. package/src/data-structures/hash/hash-map.ts +274 -496
  215. package/src/data-structures/heap/heap.ts +389 -402
  216. package/src/data-structures/heap/max-heap.ts +12 -76
  217. package/src/data-structures/heap/min-heap.ts +13 -76
  218. package/src/data-structures/linked-list/doubly-linked-list.ts +426 -530
  219. package/src/data-structures/linked-list/singly-linked-list.ts +495 -517
  220. package/src/data-structures/linked-list/skip-linked-list.ts +1 -108
  221. package/src/data-structures/priority-queue/max-priority-queue.ts +12 -87
  222. package/src/data-structures/priority-queue/min-priority-queue.ts +11 -88
  223. package/src/data-structures/priority-queue/priority-queue.ts +3 -92
  224. package/src/data-structures/queue/deque.ts +381 -357
  225. package/src/data-structures/queue/queue.ts +310 -264
  226. package/src/data-structures/stack/stack.ts +217 -131
  227. package/src/data-structures/trie/trie.ts +240 -175
  228. package/src/interfaces/binary-tree.ts +240 -6
  229. package/src/interfaces/graph.ts +37 -0
  230. package/src/types/data-structures/base/base.ts +5 -5
  231. package/src/types/data-structures/graph/abstract-graph.ts +5 -0
  232. package/src/types/utils/utils.ts +2 -0
  233. package/src/utils/utils.ts +9 -14
  234. package/test/integration/index.html +1 -1
  235. package/test/performance/benchmark-runner.ts +528 -0
  236. package/test/performance/reportor.mjs +43 -43
  237. package/test/performance/runner-config.json +39 -0
  238. package/test/performance/single-suite-runner.ts +69 -0
  239. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +3 -3
  240. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +5 -5
  241. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +4 -4
  242. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +350 -90
  243. package/test/unit/data-structures/binary-tree/bst.test.ts +12 -9
  244. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +2 -2
  245. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +25 -24
  246. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +3 -3
  247. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -4
  248. package/test/unit/data-structures/graph/directed-graph.test.ts +1 -1
  249. package/test/unit/data-structures/heap/heap.test.ts +14 -21
  250. package/test/unit/data-structures/heap/max-heap.test.ts +5 -9
  251. package/test/unit/data-structures/heap/min-heap.test.ts +1 -4
  252. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +14 -14
  253. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -7
  254. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +8 -11
  255. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +1 -4
  256. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +1 -4
  257. package/test/unit/data-structures/queue/queue.test.ts +4 -5
  258. package/test/unit/utils/utils.test.ts +0 -1
  259. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +0 -71
  260. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +0 -81
package/CHANGELOG.md CHANGED
@@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
8
8
  - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  - [`auto-changelog`](https://github.com/CookPete/auto-changelog)
10
10
 
11
- ## [v2.0.5](https://github.com/zrwusa/data-structure-typed/compare/v2.0.4...main) (upcoming)
11
+ ## [v2.1.0](https://github.com/zrwusa/data-structure-typed/compare/v2.0.4...main) (upcoming)
12
12
 
13
13
  ## [v2.0.4](https://github.com/zrwusa/data-structure-typed/compare/v1.51.5...v2.0.4) (7 May 2025)
14
14
 
package/COMMANDS.md CHANGED
@@ -33,3 +33,20 @@ Overview of the commands to test, run and build this project as well as those th
33
33
  ## References
34
34
 
35
35
  - [ESLint - Getting Started](https://eslint.org/docs/user-guide/getting-started)
36
+
37
+ ### Optimized performance runner(隔离 & 可配置)
38
+
39
+ #### Use run-order.json (same directory) to define "to run/not to run + order" and execute in isolation
40
+ ```bash
41
+ ts-node test/performance/benchmark-runner.optimized.ts --isolate --gc --cooldown-ms=80
42
+ ```
43
+
44
+ #### Specify external configuration file + label this time
45
+ ```bash
46
+ ts-node test/performance/benchmark-runner.optimized.ts --isolate --order-file=test/performance/run-order.json --label=ci-fast
47
+ ```
48
+
49
+ #### Add one-time include/exclude
50
+ ```bash
51
+ ts-node test/performance/benchmark-runner.optimized.ts --isolate --include=heap,hash-map --exclude=**/graph/**
52
+ ```
@@ -1,78 +1,14 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>performance of data-structure-typed</title>
6
- <style>
7
- *{
8
- box-sizing: border-box;
9
- }
10
- #json-to-html {
11
- padding: 0 10px 20px;
12
- }
13
-
14
- .json-to-html-label {
15
- font-size: 2rem;
16
- margin: 2rem 0 0 3px;
17
- }
18
- .content table {
19
- width: 100%;
20
- table-layout: fixed;
21
- border-collapse: collapse;
22
- margin-top: 10px;
23
- font-size: 16px;
24
- }
25
-
26
- .content table th,
27
- .content table td {
28
- padding: 8px 12px;
29
- text-align: left;
30
- border: 1px solid #ddd;
31
- }
32
-
33
- .content table th {
34
- background-color: #f2f2f2;
35
- font-weight: bold;
36
- }
37
-
38
- .content table tr:nth-child(odd) {
39
- background-color: #ffffff;
40
- }
41
- </style>
42
- </head>
43
- <body>
44
- <div id="json-to-html"><div class="json-to-html-collapse clearfix 0">
45
- <div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
46
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>3.01</td><td>0.00</td><td>1.05e-4</td></tr><tr><td>100,000 add & poll</td><td>16.57</td><td>0.02</td><td>4.12e-4</td></tr></table></div>
47
- </div><div class="json-to-html-collapse clearfix 0">
48
- <div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
49
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>100,000 add randomly</td><td>276.06</td><td>0.28</td><td>0.00</td></tr><tr><td>100,000 add</td><td>247.11</td><td>0.25</td><td>0.01</td></tr><tr><td>100,000 get</td><td>0.28</td><td>2.82e-4</td><td>9.27e-5</td></tr><tr><td>100,000 getNode</td><td>168.47</td><td>0.17</td><td>0.01</td></tr><tr><td>100,000 iterator</td><td>12.84</td><td>0.01</td><td>0.00</td></tr><tr><td>100,000 add & delete orderly</td><td>385.64</td><td>0.39</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>501.31</td><td>0.50</td><td>0.01</td></tr></table></div>
50
- </div><div class="json-to-html-collapse clearfix 0">
51
- <div class='collapsible level0' ><span class='json-to-html-label'>red-black-tree</span></div>
52
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>100,000 add randomly</td><td>78.51</td><td>0.08</td><td>0.00</td></tr><tr><td>100,000 add</td><td>104.83</td><td>0.10</td><td>0.00</td></tr><tr><td>100,000 get</td><td>0.53</td><td>5.26e-4</td><td>7.38e-5</td></tr><tr><td>100,000 getNode</td><td>249.02</td><td>0.25</td><td>0.01</td></tr><tr><td>100,000 node mode add randomly</td><td>77.15</td><td>0.08</td><td>0.00</td></tr><tr><td>100,000 node mode get</td><td>253.61</td><td>0.25</td><td>0.01</td></tr><tr><td>100,000 iterator</td><td>13.23</td><td>0.01</td><td>0.00</td></tr><tr><td>100,000 add & delete orderly</td><td>226.81</td><td>0.23</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>325.56</td><td>0.33</td><td>0.00</td></tr></table></div>
53
- </div><div class="json-to-html-collapse clearfix 0">
54
- <div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
55
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>109.12</td><td>0.11</td><td>0.02</td></tr><tr><td>1,000,000 unshift</td><td>105.65</td><td>0.11</td><td>0.01</td></tr><tr><td>1,000,000 unshift & shift</td><td>96.20</td><td>0.10</td><td>0.01</td></tr><tr><td>1,000,000 addBefore</td><td>157.94</td><td>0.16</td><td>0.03</td></tr></table></div>
56
- </div><div class="json-to-html-collapse clearfix 0">
57
- <div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
58
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.05</td><td>4.73e-5</td><td>1.24e-6</td></tr><tr><td>1,000 addEdge</td><td>2.96</td><td>0.00</td><td>9.68e-5</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>4.70e-5</td><td>1.27e-6</td></tr><tr><td>1,000 getEdge</td><td>44.92</td><td>0.04</td><td>0.01</td></tr><tr><td>tarjan</td><td>257.57</td><td>0.26</td><td>0.02</td></tr><tr><td>topologicalSort</td><td>207.12</td><td>0.21</td><td>0.01</td></tr></table></div>
59
- </div><div class="json-to-html-collapse clearfix 0">
60
- <div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
61
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>25.86</td><td>0.03</td><td>0.01</td></tr><tr><td>100,000 push & shift</td><td>2.52</td><td>0.00</td><td>0.00</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>902.25</td><td>0.90</td><td>0.00</td></tr></table></div>
62
- </div><div class="json-to-html-collapse clearfix 0">
63
- <div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
64
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>10.14</td><td>0.01</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>14.13</td><td>0.01</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>13.35</td><td>0.01</td><td>0.01</td></tr><tr><td>100,000 push & shift</td><td>1.34</td><td>0.00</td><td>6.86e-4</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>904.80</td><td>0.90</td><td>0.01</td></tr><tr><td>100,000 unshift & shift</td><td>1.21</td><td>0.00</td><td>5.28e-4</td></tr><tr><td>Native JS Array 100,000 unshift & shift</td><td>1801.73</td><td>1.80</td><td>0.01</td></tr></table></div>
65
- </div><div class="json-to-html-collapse clearfix 0">
66
- <div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
67
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>48.91</td><td>0.05</td><td>0.02</td></tr><tr><td>Native JS Map 1,000,000 set</td><td>141.21</td><td>0.14</td><td>0.02</td></tr><tr><td>Native JS Set 1,000,000 add</td><td>116.73</td><td>0.12</td><td>0.03</td></tr><tr><td>1,000,000 set & get</td><td>40.73</td><td>0.04</td><td>0.01</td></tr><tr><td>Native JS Map 1,000,000 set & get</td><td>196.24</td><td>0.20</td><td>0.02</td></tr><tr><td>Native JS Set 1,000,000 add & has</td><td>158.72</td><td>0.16</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>242.77</td><td>0.24</td><td>0.08</td></tr><tr><td>Native JS Map 1,000,000 ObjKey set & get</td><td>231.61</td><td>0.23</td><td>0.09</td></tr><tr><td>Native JS Set 1,000,000 ObjKey add & has</td><td>177.41</td><td>0.18</td><td>0.05</td></tr></table></div>
68
- </div><div class="json-to-html-collapse clearfix 0">
69
- <div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
70
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>21.20</td><td>0.02</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>39.18</td><td>0.04</td><td>0.00</td></tr></table></div>
71
- </div><div class="json-to-html-collapse clearfix 0">
72
- <div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
73
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>22.12</td><td>0.02</td><td>0.01</td></tr><tr><td>1,000,000 push & pop</td><td>25.51</td><td>0.03</td><td>0.01</td></tr></table></div>
74
- </div>
75
-
76
- </div>
77
- </body>
78
- </html>
2
+ <html lang="en"><head><meta charset="UTF-8"/><title>Benchmark Report</title>
3
+ <style>
4
+ body { margin:0; padding:0; font-family: ui-sans-serif, system-ui, -apple-system; }
5
+ .json-to-html-title { font-size: 3rem; font-weight: bold; }
6
+ .content { padding: 2rem; }
7
+ .content table { width:100%; table-layout:fixed; border-collapse:collapse; margin-top:10px; font-size:16px; }
8
+ .content table th, .content table td { padding: 8px 12px; text-align:left; border:1px solid #ddd; }
9
+ .content table th { background:#f2f2f2; font-weight:bold; }
10
+ .content table tr:nth-child(odd) { background:#fff; }
11
+ </style></head><body><div class="content">
12
+ <div class="json-to-html-title">Benchmark Report</div>
13
+ <h2>heap</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>100,000 add</td><td>4.54</td><td>0.00</td><td>1.09e-4</td></tr><tr><td>100,000 add & poll</td><td>16.99</td><td>0.02</td><td>4.39e-4</td></tr></tbody></table><h2>avl-tree</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>100,000 add randomly</td><td>323.84</td><td>0.32</td><td>0.01</td></tr><tr><td>100,000 add</td><td>297.64</td><td>0.30</td><td>0.00</td></tr><tr><td>100,000 get</td><td>0.26</td><td>2.58e-4</td><td>4.70e-6</td></tr><tr><td>100,000 getNode</td><td>164.61</td><td>0.16</td><td>0.00</td></tr><tr><td>100,000 iterator</td><td>13.93</td><td>0.01</td><td>0.00</td></tr><tr><td>100,000 add & delete orderly</td><td>435.66</td><td>0.44</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>542.69</td><td>0.54</td><td>0.01</td></tr></tbody></table><h2>red-black-tree</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>100,000 add randomly</td><td>50.51</td><td>0.05</td><td>0.00</td></tr><tr><td>100,000 add</td><td>55.64</td><td>0.06</td><td>9.96e-4</td></tr><tr><td>100,000 get</td><td>0.56</td><td>5.62e-4</td><td>8.00e-6</td></tr><tr><td>100,000 getNode</td><td>173.91</td><td>0.17</td><td>0.00</td></tr><tr><td>100,000 node mode add randomly</td><td>50.58</td><td>0.05</td><td>0.00</td></tr><tr><td>100,000 node mode get</td><td>177.74</td><td>0.18</td><td>0.00</td></tr><tr><td>100,000 iterator</td><td>13.64</td><td>0.01</td><td>0.00</td></tr><tr><td>100,000 add & delete orderly</td><td>137.34</td><td>0.14</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>227.78</td><td>0.23</td><td>0.01</td></tr></tbody></table><h2>hash-map</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>1,000,000 set</td><td>42.03</td><td>0.04</td><td>0.01</td></tr><tr><td>Native JS Map 1,000,000 set</td><td>143.77</td><td>0.14</td><td>0.01</td></tr><tr><td>Native JS Set 1,000,000 add</td><td>116.02</td><td>0.12</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>43.68</td><td>0.04</td><td>0.01</td></tr><tr><td>Native JS Map 1,000,000 set & get</td><td>192.46</td><td>0.19</td><td>0.01</td></tr><tr><td>Native JS Set 1,000,000 add & has</td><td>160.85</td><td>0.16</td><td>0.01</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>233.37</td><td>0.23</td><td>0.03</td></tr><tr><td>Native JS Map 1,000,000 ObjKey set & get</td><td>212.39</td><td>0.21</td><td>0.03</td></tr><tr><td>Native JS Set 1,000,000 ObjKey add & has</td><td>186.55</td><td>0.19</td><td>0.02</td></tr></tbody></table><h2>directed-graph</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>1,000 addVertex</td><td>0.05</td><td>4.69e-5</td><td>1.05e-6</td></tr><tr><td>1,000 addEdge</td><td>2.97</td><td>0.00</td><td>2.82e-4</td></tr><tr><td>1,000 getVertex</td><td>0.04</td><td>3.70e-5</td><td>8.00e-7</td></tr><tr><td>1,000 getEdge</td><td>45.20</td><td>0.05</td><td>0.01</td></tr><tr><td>tarjan</td><td>246.50</td><td>0.25</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>201.36</td><td>0.20</td><td>0.01</td></tr></tbody></table><h2>queue</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>24.89</td><td>0.02</td><td>0.00</td></tr><tr><td>100,000 push & shift</td><td>2.77</td><td>0.00</td><td>2.63e-4</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>1172.87</td><td>1.17</td><td>0.09</td></tr></tbody></table><h2>deque</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>9.76</td><td>0.01</td><td>6.06e-4</td></tr><tr><td>1,000,000 push & pop</td><td>12.80</td><td>0.01</td><td>4.62e-4</td></tr><tr><td>1,000,000 push & shift</td><td>13.62</td><td>0.01</td><td>4.97e-4</td></tr><tr><td>100,000 push & shift</td><td>1.39</td><td>0.00</td><td>4.95e-5</td></tr><tr><td>Native JS Array 100,000 push & shift</td><td>1174.62</td><td>1.17</td><td>0.24</td></tr><tr><td>100,000 unshift & shift</td><td>1.37</td><td>0.00</td><td>5.62e-5</td></tr><tr><td>Native JS Array 100,000 unshift & shift</td><td>2022.04</td><td>2.02</td><td>0.16</td></tr></tbody></table><h2>trie</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>100,000 push</td><td>28.21</td><td>0.03</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>38.86</td><td>0.04</td><td>0.00</td></tr></tbody></table><h2>stack</h2><table><thead><tr><th>test name</th><th>time taken (ms)</th><th>sample mean (secs)</th><th>sample deviation</th></tr></thead><tbody><tr><td>1,000,000 push</td><td>25.11</td><td>0.03</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>27.18</td><td>0.03</td><td>0.00</td></tr></tbody></table>
14
+ </div></body></html>