data-structure-typed 2.4.0 → 2.4.1
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.
- package/CHANGELOG.md +1 -1
- package/README.md +2 -3
- package/README_CN.md +0 -1
- package/benchmark/report.html +118 -40
- package/benchmark/report.json +726 -726
- package/dist/cjs/index.cjs +79 -21
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +79 -21
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +79 -21
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +79 -21
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +17 -6
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +13 -5
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +12 -5
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +15 -4
- package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +6 -1
- package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +6 -1
- package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +6 -1
- package/dist/umd/data-structure-typed.js +79 -21
- package/dist/umd/data-structure-typed.js.map +1 -1
- package/dist/umd/data-structure-typed.min.js +4 -4
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +6 -2
- package/src/data-structures/binary-tree/tree-map.ts +35 -13
- package/src/data-structures/binary-tree/tree-multi-map.ts +41 -20
- package/src/data-structures/binary-tree/tree-multi-set.ts +17 -6
- package/src/data-structures/binary-tree/tree-set.ts +19 -6
- package/src/types/data-structures/binary-tree/tree-map.ts +7 -1
- package/src/types/data-structures/binary-tree/tree-multi-set.ts +7 -1
- package/src/types/data-structures/binary-tree/tree-set.ts +7 -1
- package/test/performance/reportor-enhanced.mjs +256 -100
- package/test/unit/data-structures/binary-tree/tree-map.test.ts +46 -0
- package/test/unit/data-structures/binary-tree/tree-multi-map.rfc.test.ts +47 -0
- package/test/unit/data-structures/binary-tree/tree-multi-set.test.ts +49 -0
- package/test/unit/data-structures/binary-tree/tree-set.test.ts +44 -0
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.4.
|
|
11
|
+
## [v2.4.1](https://github.com/zrwusa/data-structure-typed/compare/v2.2.3...main) (upcoming)
|
|
12
12
|
|
|
13
13
|
## [v2.2.3](https://github.com/zrwusa/data-structure-typed/compare/v2.2.2...v2.2.3) (6 January 2026)
|
|
14
14
|
|
package/README.md
CHANGED
|
@@ -6,7 +6,6 @@ A comprehensive TypeScript data structures library with production-ready impleme
|
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|

|
|
9
|
-

|
|
10
9
|

|
|
11
10
|
[](https://codecov.io/gh/zrwusa/data-structure-typed)
|
|
12
11
|

|
|
@@ -93,7 +92,7 @@ for (let i = 0; i < 100000; i++) {
|
|
|
93
92
|
|
|
94
93
|
- **Tree-shakable** ESM / CJS / legacy builds
|
|
95
94
|
|
|
96
|
-
📊 [Full benchmarks →](./docs/
|
|
95
|
+
📊 [Full benchmarks →](./docs/benchmark.html)
|
|
97
96
|
|
|
98
97
|
---
|
|
99
98
|
|
|
@@ -469,7 +468,7 @@ class MessageQueue {
|
|
|
469
468
|
✅ **50+ code examples** (real-world patterns)
|
|
470
469
|
✅ **Full TypeScript support** (strict typing)
|
|
471
470
|
✅ **Performance benchmarks** (484x speedups)
|
|
472
|
-
✅ **Framework integrations** (React, Express, Nest.js)
|
|
471
|
+
✅ **Framework integrations** (React, Express, Nest.js)
|
|
473
472
|
✅ **6 core documentation files** (2500+ lines)
|
|
474
473
|
|
|
475
474
|
---
|
package/README_CN.md
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|

|
|
9
|
-

|
|
10
9
|

|
|
11
10
|
[](https://codecov.io/gh/zrwusa/data-structure-typed)
|
|
12
11
|

|
package/benchmark/report.html
CHANGED
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Performance Benchmark Report</title>
|
|
6
|
+
<title>Performance Benchmark Report - data-structure-typed</title>
|
|
7
7
|
<style>
|
|
8
8
|
body {
|
|
9
9
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
10
10
|
background: #f5f5f5;
|
|
11
11
|
color: #333;
|
|
12
12
|
padding: 20px;
|
|
13
|
+
line-height: 1.6;
|
|
13
14
|
}
|
|
14
15
|
.container {
|
|
15
|
-
max-width:
|
|
16
|
+
max-width: 1000px;
|
|
16
17
|
margin: 0 auto;
|
|
17
18
|
background: white;
|
|
18
19
|
border-radius: 8px;
|
|
@@ -28,8 +29,18 @@
|
|
|
28
29
|
.timestamp {
|
|
29
30
|
color: #7f8c8d;
|
|
30
31
|
font-size: 14px;
|
|
32
|
+
margin-bottom: 10px;
|
|
33
|
+
}
|
|
34
|
+
.back-link {
|
|
31
35
|
margin-bottom: 30px;
|
|
32
36
|
}
|
|
37
|
+
.back-link a {
|
|
38
|
+
color: #3498db;
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
}
|
|
41
|
+
.back-link a:hover {
|
|
42
|
+
text-decoration: underline;
|
|
43
|
+
}
|
|
33
44
|
.summary {
|
|
34
45
|
background: #ecf0f1;
|
|
35
46
|
padding: 15px;
|
|
@@ -54,6 +65,33 @@
|
|
|
54
65
|
color: #2c3e50;
|
|
55
66
|
margin-top: 5px;
|
|
56
67
|
}
|
|
68
|
+
.toc {
|
|
69
|
+
background: #f9f9f9;
|
|
70
|
+
padding: 20px;
|
|
71
|
+
border-radius: 6px;
|
|
72
|
+
margin-bottom: 30px;
|
|
73
|
+
}
|
|
74
|
+
.toc h3 {
|
|
75
|
+
margin-top: 0;
|
|
76
|
+
color: #2c3e50;
|
|
77
|
+
}
|
|
78
|
+
.toc ul {
|
|
79
|
+
column-count: 3;
|
|
80
|
+
column-gap: 20px;
|
|
81
|
+
list-style: none;
|
|
82
|
+
padding: 0;
|
|
83
|
+
margin: 0;
|
|
84
|
+
}
|
|
85
|
+
.toc li {
|
|
86
|
+
margin-bottom: 8px;
|
|
87
|
+
}
|
|
88
|
+
.toc a {
|
|
89
|
+
color: #3498db;
|
|
90
|
+
text-decoration: none;
|
|
91
|
+
}
|
|
92
|
+
.toc a:hover {
|
|
93
|
+
text-decoration: underline;
|
|
94
|
+
}
|
|
57
95
|
.test-section {
|
|
58
96
|
margin-bottom: 40px;
|
|
59
97
|
padding: 20px;
|
|
@@ -65,79 +103,119 @@
|
|
|
65
103
|
font-size: 18px;
|
|
66
104
|
font-weight: 600;
|
|
67
105
|
color: #2c3e50;
|
|
68
|
-
margin-bottom:
|
|
69
|
-
text-transform: uppercase;
|
|
70
|
-
letter-spacing: 1px;
|
|
71
|
-
}
|
|
72
|
-
.comparison {
|
|
73
|
-
display: flex;
|
|
74
|
-
gap: 20px;
|
|
75
|
-
margin-bottom: 20px;
|
|
76
|
-
}
|
|
77
|
-
.comparison-column {
|
|
78
|
-
flex: 1;
|
|
106
|
+
margin-bottom: 15px;
|
|
79
107
|
}
|
|
80
|
-
.
|
|
81
|
-
font-
|
|
82
|
-
|
|
83
|
-
margin-bottom:
|
|
84
|
-
|
|
85
|
-
font-size: 14px;
|
|
86
|
-
}
|
|
87
|
-
.lang-js {
|
|
88
|
-
color: #f39c12;
|
|
89
|
-
}
|
|
90
|
-
.lang-cpp {
|
|
91
|
-
color: #e74c3c;
|
|
108
|
+
.note {
|
|
109
|
+
font-size: 13px;
|
|
110
|
+
color: #7f8c8d;
|
|
111
|
+
margin-bottom: 15px;
|
|
112
|
+
font-style: italic;
|
|
92
113
|
}
|
|
93
114
|
table {
|
|
94
115
|
width: 100%;
|
|
95
116
|
border-collapse: collapse;
|
|
96
|
-
margin-bottom:
|
|
117
|
+
margin-bottom: 10px;
|
|
97
118
|
background: white;
|
|
98
119
|
border-radius: 6px;
|
|
99
120
|
overflow: hidden;
|
|
100
121
|
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
|
|
122
|
+
font-size: 13px;
|
|
101
123
|
}
|
|
102
124
|
th {
|
|
103
125
|
background: #34495e;
|
|
104
126
|
color: white;
|
|
105
|
-
padding: 12px
|
|
106
|
-
text-align:
|
|
127
|
+
padding: 10px 12px;
|
|
128
|
+
text-align: right;
|
|
107
129
|
font-weight: 600;
|
|
108
|
-
|
|
130
|
+
}
|
|
131
|
+
th:first-child {
|
|
132
|
+
text-align: left;
|
|
109
133
|
}
|
|
110
134
|
td {
|
|
111
|
-
padding: 12px
|
|
135
|
+
padding: 10px 12px;
|
|
112
136
|
border-bottom: 1px solid #ecf0f1;
|
|
113
|
-
|
|
137
|
+
text-align: right;
|
|
138
|
+
}
|
|
139
|
+
td:first-child {
|
|
140
|
+
text-align: left;
|
|
141
|
+
font-weight: 500;
|
|
114
142
|
}
|
|
115
143
|
tr:hover {
|
|
116
144
|
background: #f5f5f5;
|
|
117
145
|
}
|
|
118
|
-
.metric {
|
|
119
|
-
font-weight: 500;
|
|
146
|
+
.metric-dst {
|
|
120
147
|
color: #27ae60;
|
|
148
|
+
font-weight: 600;
|
|
149
|
+
}
|
|
150
|
+
.metric-sdsl {
|
|
151
|
+
color: #8e44ad;
|
|
152
|
+
}
|
|
153
|
+
.metric-native {
|
|
154
|
+
color: #e67e22;
|
|
155
|
+
}
|
|
156
|
+
.metric-cpp {
|
|
157
|
+
color: #e74c3c;
|
|
158
|
+
}
|
|
159
|
+
.na {
|
|
160
|
+
color: #bdc3c7;
|
|
161
|
+
}
|
|
162
|
+
@media (max-width: 768px) {
|
|
163
|
+
.toc ul {
|
|
164
|
+
column-count: 1;
|
|
165
|
+
}
|
|
166
|
+
table {
|
|
167
|
+
font-size: 12px;
|
|
168
|
+
}
|
|
169
|
+
th, td {
|
|
170
|
+
padding: 8px 6px;
|
|
171
|
+
}
|
|
121
172
|
}
|
|
122
173
|
</style>
|
|
123
174
|
</head>
|
|
124
175
|
<body>
|
|
125
176
|
<div class="container">
|
|
126
177
|
<h1>📊 Performance Benchmark Report</h1>
|
|
127
|
-
<div class="timestamp">Generated: 2/
|
|
178
|
+
<div class="timestamp">Generated: 2/27/2026, 11:00:50 PM</div>
|
|
179
|
+
<div class="back-link">
|
|
180
|
+
<a href="https://github.com/zrwusa/data-structure-typed">← Back to Repository</a> |
|
|
181
|
+
<a href="https://github.com/zrwusa/data-structure-typed/blob/main/docs/PERFORMANCE.md">View Markdown Version</a>
|
|
182
|
+
</div>
|
|
128
183
|
|
|
129
184
|
<div class="summary">
|
|
130
185
|
<div class="summary-stat">
|
|
131
|
-
<div class="summary-label">
|
|
186
|
+
<div class="summary-label">Data Structures</div>
|
|
132
187
|
<div class="summary-value">17</div>
|
|
133
188
|
</div>
|
|
134
189
|
<div class="summary-stat">
|
|
135
|
-
<div class="summary-label">
|
|
136
|
-
<div class="summary-value">
|
|
190
|
+
<div class="summary-label">JS Tests</div>
|
|
191
|
+
<div class="summary-value">177</div>
|
|
137
192
|
</div>
|
|
138
193
|
<div class="summary-stat">
|
|
139
|
-
<div class="summary-label">
|
|
140
|
-
<div class="summary-value">
|
|
194
|
+
<div class="summary-label">C++ Tests</div>
|
|
195
|
+
<div class="summary-value">74</div>
|
|
141
196
|
</div>
|
|
142
197
|
</div>
|
|
143
|
-
<div class="test-section"><div class="test-name">tree-map</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M set TreeMap</td><td class="metric">1584.24</td><td>1544.63</td><td>1740.12</td><td>±5.08%</td></tr><tr><td>1M set TreeMap (Node)</td><td class="metric">1163.47</td><td>1140.21</td><td>1187.8</td><td>±1.2%</td></tr><tr><td>1M set RBT</td><td class="metric">1876.1</td><td>1638.01</td><td>2894.16</td><td>±27.93%</td></tr><tr><td>1M set RBT (Node)</td><td class="metric">1341.04</td><td>1212.84</td><td>2075.29</td><td>±22.33%</td></tr><tr><td>1M set js-sdsl</td><td class="metric">955.32</td><td>812.96</td><td>1656.95</td><td>±30.06%</td></tr><tr><td>1M get TreeMap</td><td class="metric">162.76</td><td>159.63</td><td>169.33</td><td>±0.76%</td></tr><tr><td>1M get TreeMap (Node)</td><td class="metric">1007.27</td><td>1004.6</td><td>1009.58</td><td>±0.17%</td></tr><tr><td>1M get RBT</td><td class="metric">159.61</td><td>139.31</td><td>169.48</td><td>±2.2%</td></tr><tr><td>1M get RBT (Node)</td><td class="metric">1059.56</td><td>1054.12</td><td>1067.31</td><td>±0.41%</td></tr><tr><td>1M get js-sdsl</td><td class="metric">814.55</td><td>807.37</td><td>832.64</td><td>±0.81%</td></tr><tr><td>1M build+get TreeMap</td><td class="metric">1936.03</td><td>1792.06</td><td>2519.08</td><td>±15.73%</td></tr><tr><td>1M build+get TreeMap (Node)</td><td class="metric">2351.42</td><td>2042.67</td><td>3044.57</td><td>±20.62%</td></tr><tr><td>1M build+get RBT</td><td class="metric">2009.46</td><td>1781.2</td><td>3079.96</td><td>±27.4%</td></tr><tr><td>1M build+get RBT (Node)</td><td class="metric">2191.41</td><td>2154.05</td><td>2228.17</td><td>±1.37%</td></tr><tr><td>1M build+get js-sdsl</td><td class="metric">1767.13</td><td>1506.48</td><td>2657.98</td><td>±26.33%</td></tr><tr><td>100K rangeSearch TreeMap</td><td class="metric">114.35</td><td>72.07</td><td>917.58</td><td>±50.59%</td></tr><tr><td>100K rangeSearch TreeMap (Node)</td><td class="metric">82.85</td><td>80.41</td><td>102.84</td><td>±1.59%</td></tr><tr><td>100K navigable TreeMap</td><td class="metric">168.61</td><td>164.97</td><td>175.78</td><td>±0.75%</td></tr><tr><td>100K navigable TreeMap (Node)</td><td class="metric">245.61</td><td>243.13</td><td>248.82</td><td>±0.4%</td></tr><tr><td>100K build+rangeSearch TreeMap</td><td class="metric">1800.18</td><td>1586.05</td><td>2490.56</td><td>±19.93%</td></tr><tr><td>100K build+rangeSearch TreeMap (Node)</td><td class="metric">1364.8</td><td>1198.69</td><td>2119.02</td><td>±28.44%</td></tr><tr><td>100K build+navigable TreeMap</td><td class="metric">1733.87</td><td>1721.11</td><td>1753.36</td><td>±0.69%</td></tr><tr><td>100K build+navigable TreeMap (Node)</td><td class="metric">1423.19</td><td>1390.54</td><td>1517.41</td><td>±3.56%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M set std::map</td><td class="metric">512</td><td>486.4</td><td>537.6</td><td>±2.50%</td></tr><tr><td>1M get std::map</td><td class="metric">322</td><td>305.9</td><td>338.1</td><td>±2.50%</td></tr><tr><td>1M build+get std::map</td><td class="metric">819</td><td>778.05</td><td>859.95</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">tree-set</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add TreeSet</td><td class="metric">1817.81</td><td>1533.15</td><td>2706.38</td><td>±25.9%</td></tr><tr><td>1M add TreeSet (Node)</td><td class="metric">1476.13</td><td>1148.9</td><td>3279.63</td><td>±49.85%</td></tr><tr><td>1M add RBT</td><td class="metric">1956.77</td><td>1612.71</td><td>3418.44</td><td>±38.5%</td></tr><tr><td>1M add RBT (Node)</td><td class="metric">1454.84</td><td>1195.1</td><td>2613.68</td><td>±41.02%</td></tr><tr><td>1M add js-sdsl</td><td class="metric">1139.28</td><td>809.72</td><td>2722.45</td><td>±71.46%</td></tr><tr><td>1M has TreeSet</td><td class="metric">89.75</td><td>86.56</td><td>99.35</td><td>±0.95%</td></tr><tr><td>1M has TreeSet (Node)</td><td class="metric">929.28</td><td>927.12</td><td>933.02</td><td>±0.2%</td></tr><tr><td>1M has RBT</td><td class="metric">91.74</td><td>83.2</td><td>100.99</td><td>±2.08%</td></tr><tr><td>1M has RBT (Node)</td><td class="metric">1095.73</td><td>1051.17</td><td>1164.12</td><td>±3.93%</td></tr><tr><td>1M has js-sdsl</td><td class="metric">849.02</td><td>838.57</td><td>875.56</td><td>±1.42%</td></tr><tr><td>1M build+has TreeSet</td><td class="metric">2096.95</td><td>1624.92</td><td>3921.13</td><td>±60.38%</td></tr><tr><td>1M build+has TreeSet (Node)</td><td class="metric">2072.15</td><td>2019.66</td><td>2115.15</td><td>±1.84%</td></tr><tr><td>1M build+has RBT</td><td class="metric">2172.55</td><td>1674.07</td><td>4259.19</td><td>±49.52%</td></tr><tr><td>1M build+has RBT (Node)</td><td class="metric">2187.87</td><td>2163.01</td><td>2203.74</td><td>±0.79%</td></tr><tr><td>1M build+has js-sdsl</td><td class="metric">1610.39</td><td>1574.07</td><td>1647.04</td><td>±1.94%</td></tr><tr><td>100K rangeSearch TreeSet</td><td class="metric">37.37</td><td>35.19</td><td>40.18</td><td>±0.86%</td></tr><tr><td>100K rangeSearch TreeSet (Node)</td><td class="metric">36.88</td><td>35.59</td><td>42.99</td><td>±1.02%</td></tr><tr><td>100K navigable TreeSet</td><td class="metric">153.24</td><td>150.21</td><td>158.68</td><td>±0.72%</td></tr><tr><td>100K navigable TreeSet (Node)</td><td class="metric">151.69</td><td>149.84</td><td>154.73</td><td>±0.5%</td></tr><tr><td>100K build+rangeSearch TreeSet</td><td class="metric">1921</td><td>1594.35</td><td>3251.16</td><td>±35.83%</td></tr><tr><td>100K build+rangeSearch TreeSet (Node)</td><td class="metric">1451.29</td><td>1157.2</td><td>3130.5</td><td>±47.2%</td></tr><tr><td>100K build+navigable TreeSet</td><td class="metric">1717.88</td><td>1690.85</td><td>1738.33</td><td>±0.98%</td></tr><tr><td>100K build+navigable TreeSet (Node)</td><td class="metric">1323.3</td><td>1278.1</td><td>1426.23</td><td>±4.21%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add std::set</td><td class="metric">462</td><td>438.9</td><td>485.1</td><td>±2.50%</td></tr><tr><td>1M has std::set</td><td class="metric">444</td><td>421.8</td><td>466.2</td><td>±2.50%</td></tr><tr><td>1M build+has std::set</td><td class="metric">837</td><td>795.15</td><td>878.85</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">tree-multi-map</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add (TreeMultiMap bucketed)</td><td class="metric">539.87</td><td>427.65</td><td>1430.72</td><td>±41.48%</td></tr><tr><td>1M has-only (TreeMultiMap)</td><td class="metric">37.17</td><td>36.24</td><td>39.34</td><td>±0.49%</td></tr><tr><td>1M get-only (TreeMultiMap)</td><td class="metric">148.7</td><td>141.89</td><td>162.51</td><td>±2%</td></tr><tr><td>1M count-only (TreeMultiMap)</td><td class="metric">231.71</td><td>225.61</td><td>260.61</td><td>±2.03%</td></tr><tr><td>1M build+has (TreeMultiMap)</td><td class="metric">605.14</td><td>471.31</td><td>1600.47</td><td>±47.42%</td></tr><tr><td>1M build+get (TreeMultiMap)</td><td class="metric">580.53</td><td>567.4</td><td>591.19</td><td>±1.03%</td></tr><tr><td>100K hasEntry (TreeMultiMap Object.is)</td><td class="metric">478.71</td><td>461.88</td><td>499.68</td><td>±1.95%</td></tr><tr><td>100K deleteValue (TreeMultiMap Object.is)</td><td class="metric">492.5</td><td>483.65</td><td>503.79</td><td>±0.97%</td></tr><tr><td>100K firstEntry/lastEntry (TreeMultiMap)</td><td class="metric">0</td><td>null</td><td>null</td><td>±0%</td></tr><tr><td>100K ceilingEntry/floorEntry (TreeMultiMap)</td><td class="metric">0</td><td>null</td><td>null</td><td>±0%</td></tr><tr><td>1M bucket iteration (TreeMultiMap)</td><td class="metric">28.37</td><td>27.16</td><td>29.86</td><td>±0.63%</td></tr><tr><td>1M flatEntries iteration (TreeMultiMap)</td><td class="metric">135.69</td><td>129.69</td><td>141.56</td><td>±0.86%</td></tr><tr><td>1M size property (TreeMultiMap)</td><td class="metric">0</td><td>0</td><td>0</td><td>±3.13%</td></tr><tr><td>1M totalSize property (TreeMultiMap)</td><td class="metric">28.59</td><td>26.32</td><td>91.83</td><td>±7.13%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add std::multimap</td><td class="metric">731</td><td>694.45</td><td>767.55</td><td>±2.50%</td></tr><tr><td>1M has std::multimap</td><td class="metric">833</td><td>791.35</td><td>874.65</td><td>±2.50%</td></tr><tr><td>1M get std::multimap</td><td class="metric">1553</td><td>1475.35</td><td>1630.65</td><td>±2.50%</td></tr><tr><td>1M count std::multimap</td><td class="metric">1548</td><td>1470.6</td><td>1625.4</td><td>±2.50%</td></tr><tr><td>1M build+has std::multimap</td><td class="metric">1519</td><td>1443.05</td><td>1594.95</td><td>±2.50%</td></tr><tr><td>1M build+get std::multimap</td><td class="metric">2263</td><td>2149.85</td><td>2376.15</td><td>±2.50%</td></tr><tr><td>1M iterate std::multimap</td><td class="metric">109</td><td>103.55</td><td>114.45</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">tree-multi-set</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add (TreeMultiSet expanded iteration)</td><td class="metric">318.73</td><td>225.99</td><td>1280.19</td><td>±54.8%</td></tr><tr><td>1M has-only (TreeMultiSet)</td><td class="metric">144.4</td><td>139.38</td><td>161.55</td><td>±1.57%</td></tr><tr><td>1M count-only (TreeMultiSet)</td><td class="metric">146.14</td><td>137.88</td><td>170.81</td><td>±2.71%</td></tr><tr><td>1M build+has (TreeMultiSet)</td><td class="metric">390.86</td><td>370.84</td><td>421.49</td><td>±2.87%</td></tr><tr><td>1M build+count (TreeMultiSet)</td><td class="metric">382.27</td><td>371.02</td><td>416.14</td><td>±2.16%</td></tr><tr><td>100K delete-one (TreeMultiSet)</td><td class="metric">249.65</td><td>240.62</td><td>257.99</td><td>±1.48%</td></tr><tr><td>100K setCount (TreeMultiSet)</td><td class="metric">291.95</td><td>238.1</td><td>666.41</td><td>±21.59%</td></tr><tr><td>1M expanded iteration (TreeMultiSet)</td><td class="metric">61.09</td><td>58.72</td><td>65.95</td><td>±0.71%</td></tr><tr><td>1M entries view (TreeMultiSet)</td><td class="metric">20.35</td><td>19.5</td><td>21.21</td><td>±0.4%</td></tr><tr><td>1M size property (TreeMultiSet)</td><td class="metric">0</td><td>0</td><td>0</td><td>±3.15%</td></tr><tr><td>1M distinctSize property (TreeMultiSet)</td><td class="metric">0</td><td>0</td><td>0</td><td>±3.5%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M add std::multiset</td><td class="metric">752</td><td>714.4</td><td>789.6</td><td>±2.50%</td></tr><tr><td>1M has std::multiset</td><td class="metric">756</td><td>718.2</td><td>793.8</td><td>±2.50%</td></tr><tr><td>1M count std::multiset</td><td class="metric">1332</td><td>1265.4</td><td>1398.6</td><td>±2.50%</td></tr><tr><td>1M build+has std::multiset</td><td class="metric">1406</td><td>1335.7</td><td>1476.3</td><td>±2.50%</td></tr><tr><td>1M build+count std::multiset</td><td class="metric">1909</td><td>1813.55</td><td>2004.45</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">doubly-linked-list</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100k push</td><td class="metric">8.0558</td><td>5.6144</td><td>54.1937</td><td>±17.51%</td></tr><tr><td>Native JS Array 100k push</td><td class="metric">2.0706</td><td>1.9656</td><td>2.7555</td><td>±1.17%</td></tr><tr><td>100k unshift</td><td class="metric">6.7611</td><td>5.4572</td><td>7.4359</td><td>±1.44%</td></tr><tr><td>Native JS Array 100k unshift</td><td class="metric">1058.07</td><td>955.32</td><td>1101.74</td><td>±4.1%</td></tr><tr><td>100k unshift & shift</td><td class="metric">4.5245</td><td>4.129</td><td>4.8488</td><td>±0.47%</td></tr><tr><td>Native JS Array 100k unshift & shift</td><td class="metric">2296.49</td><td>2126.41</td><td>2452.19</td><td>±4.74%</td></tr><tr><td>100k addAt(mid)</td><td class="metric">1645.02</td><td>1331.61</td><td>2329.62</td><td>±26.54%</td></tr><tr><td>100k addBefore (cursor)</td><td class="metric">6.4823</td><td>5.7978</td><td>15.2295</td><td>±5.35%</td></tr><tr><td>100k push (js-sdsl)</td><td class="metric">1.9328</td><td>1.0742</td><td>4.3993</td><td>±10.84%</td></tr><tr><td>100k unshift (js-sdsl)</td><td class="metric">1.8299</td><td>1.2022</td><td>4.2293</td><td>±10.85%</td></tr><tr><td>100k unshift & shift (js-sdsl)</td><td class="metric">2.2136</td><td>1.8582</td><td>4.9582</td><td>±3.15%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100k push</td><td class="metric">5.42</td><td>5.15</td><td>5.69</td><td>±2.50%</td></tr><tr><td>100k unshift</td><td class="metric">5.44</td><td>5.17</td><td>5.71</td><td>±2.50%</td></tr><tr><td>100k unshift & shift</td><td class="metric">5.43</td><td>5.16</td><td>5.71</td><td>±2.50%</td></tr><tr><td>100k addAt(mid)</td><td class="metric">705.4</td><td>670.13</td><td>740.67</td><td>±2.50%</td></tr><tr><td>100k addBefore (cursor)</td><td class="metric">6.14</td><td>5.83</td><td>6.44</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">singly-linked-list</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K unshift & shift</td><td class="metric">5.24</td><td>3.3731</td><td>6.9825</td><td>±6.31%</td></tr><tr><td>Native JS Array 100K unshift & shift</td><td class="metric">4029.88</td><td>3712.55</td><td>4655.34</td><td>±11.17%</td></tr><tr><td>10K unshift & shift</td><td class="metric">0.6349</td><td>0.4499</td><td>0.7052</td><td>±2.5%</td></tr><tr><td>Native JS Array 10K unshift & shift</td><td class="metric">13.23</td><td>9.53</td><td>26.5</td><td>±4.1%</td></tr><tr><td>10K addAt(mid)</td><td class="metric">18.11</td><td>9.37</td><td>24.22</td><td>±4.8%</td></tr><tr><td>10K addBefore (cursor)</td><td class="metric">30.11</td><td>17.53</td><td>44.66</td><td>±7.08%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K unshift & shift</td><td class="metric">10.1</td><td>9.59</td><td>10.61</td><td>±2.50%</td></tr><tr><td>10K unshift & shift</td><td class="metric">1</td><td>0.95</td><td>1.05</td><td>±2.50%</td></tr><tr><td>10K addAt(mid)</td><td class="metric">12.7</td><td>12.06</td><td>13.33</td><td>±2.50%</td></tr><tr><td>10K addBefore (cursor)</td><td class="metric">1.13</td><td>1.07</td><td>1.19</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">hash-map</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M set</td><td class="metric">185.57</td><td>123.72</td><td>354.4</td><td>±14.94%</td></tr><tr><td>1M set (js-sdsl)</td><td class="metric">158.49</td><td>84.11</td><td>643.16</td><td>±34.11%</td></tr><tr><td>Native JS Map 1M set</td><td class="metric">219.67</td><td>197.77</td><td>240.33</td><td>±3.21%</td></tr><tr><td>Native JS Set 1M add</td><td class="metric">185.65</td><td>169.65</td><td>240.4</td><td>±4.2%</td></tr><tr><td>1M add HashSet (js-sdsl)</td><td class="metric">140.88</td><td>62.8</td><td>588.51</td><td>±36.45%</td></tr><tr><td>1M set & get</td><td class="metric">247.06</td><td>195.24</td><td>280.69</td><td>±6.84%</td></tr><tr><td>1M set & get (js-sdsl)</td><td class="metric">112.79</td><td>69.67</td><td>301.96</td><td>±15.09%</td></tr><tr><td>Native JS Map 1M set & get</td><td class="metric">287.39</td><td>228.97</td><td>475.96</td><td>±13.36%</td></tr><tr><td>Native JS Set 1M add & has</td><td class="metric">237.7</td><td>166.74</td><td>311.9</td><td>±9.59%</td></tr><tr><td>1M add & has HashSet (js-sdsl)</td><td class="metric">174.95</td><td>112.76</td><td>388.21</td><td>±18.55%</td></tr><tr><td>1M ObjKey set & get</td><td class="metric">379.65</td><td>341.94</td><td>490.79</td><td>±8.68%</td></tr><tr><td>1M ObjKey set & get (js-sdsl)</td><td class="metric">698.13</td><td>531.76</td><td>848.55</td><td>±14.32%</td></tr><tr><td>Native JS Map 1M ObjKey set & get</td><td class="metric">299.71</td><td>201.71</td><td>437.48</td><td>±14.71%</td></tr><tr><td>Native JS Set 1M ObjKey add & has</td><td class="metric">291.61</td><td>247.73</td><td>432.74</td><td>±12.92%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M set</td><td class="metric">70.22</td><td>66.71</td><td>73.73</td><td>±2.50%</td></tr><tr><td>std::map 1M set</td><td class="metric">162.57</td><td>154.44</td><td>170.69</td><td>±2.50%</td></tr><tr><td>std::unordered_set 1M add</td><td class="metric">70.18</td><td>66.68</td><td>73.69</td><td>±2.50%</td></tr><tr><td>1M set & get</td><td class="metric">73.04</td><td>69.39</td><td>76.69</td><td>±2.50%</td></tr><tr><td>std::map 1M set & get</td><td class="metric">208.33</td><td>197.91</td><td>218.75</td><td>±2.50%</td></tr><tr><td>std::unordered_set 1M add & has</td><td class="metric">73.24</td><td>69.58</td><td>76.9</td><td>±2.50%</td></tr><tr><td>1M ObjKey set & get</td><td class="metric">92.55</td><td>87.92</td><td>97.18</td><td>±2.50%</td></tr><tr><td>std::map 1M ObjKey set & get</td><td class="metric">213.55</td><td>202.87</td><td>224.23</td><td>±2.50%</td></tr><tr><td>std::unordered_set 1M ObjKey add & has</td><td class="metric">79.03</td><td>75.08</td><td>82.99</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">deque</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M push</td><td class="metric">10.82</td><td>7.57</td><td>16.63</td><td>±5.46%</td></tr><tr><td>Native JS Array 1M push</td><td class="metric">29.7</td><td>24.35</td><td>60.97</td><td>±7.53%</td></tr><tr><td>1M push & pop</td><td class="metric">16.92</td><td>11.89</td><td>27.13</td><td>±7.55%</td></tr><tr><td>Native JS Array 1M push & pop</td><td class="metric">54.43</td><td>47.43</td><td>94.99</td><td>±4.96%</td></tr><tr><td>1M push & shift</td><td class="metric">33.74</td><td>28.58</td><td>55.22</td><td>±3.46%</td></tr><tr><td>100K push & shift</td><td class="metric">2.4481</td><td>1.6576</td><td>3.0384</td><td>±2.16%</td></tr><tr><td>Native JS Array 100K push & shift</td><td class="metric">2007.91</td><td>1286.9</td><td>2332.76</td><td>±19.94%</td></tr><tr><td>100K unshift & shift</td><td class="metric">2.4391</td><td>1.6261</td><td>4.5413</td><td>±3.37%</td></tr><tr><td>Native JS Array 100K unshift & shift</td><td class="metric">4067.39</td><td>3872.36</td><td>4229.01</td><td>±4.9%</td></tr><tr><td>1M push (js-sdsl)</td><td class="metric">17.59</td><td>12.95</td><td>33.05</td><td>±5.03%</td></tr><tr><td>1M push & pop (js-sdsl)</td><td class="metric">27.92</td><td>21.54</td><td>47.11</td><td>±7.02%</td></tr><tr><td>100K push & shift (js-sdsl)</td><td class="metric">2.5224</td><td>1.2895</td><td>3.798</td><td>±4.3%</td></tr><tr><td>100K unshift & shift (js-sdsl)</td><td class="metric">2.5091</td><td>1.2069</td><td>3.042</td><td>±2.2%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M push</td><td class="metric">1.76</td><td>1.67</td><td>1.85</td><td>±2.50%</td></tr><tr><td>1M push & pop</td><td class="metric">2.2</td><td>2.09</td><td>2.31</td><td>±2.50%</td></tr><tr><td>1M push & shift</td><td class="metric">1.94</td><td>1.84</td><td>2.04</td><td>±2.50%</td></tr><tr><td>100K push & shift</td><td class="metric">0.19</td><td>0.18</td><td>0.2</td><td>±2.50%</td></tr><tr><td>Native vector 100K push & shift</td><td class="metric">347.72</td><td>330.34</td><td>365.11</td><td>±2.50%</td></tr><tr><td>100K unshift & shift</td><td class="metric">0.19</td><td>0.18</td><td>0.2</td><td>±2.50%</td></tr><tr><td>Native vector 100K unshift & shift</td><td class="metric">705.12</td><td>669.86</td><td>740.37</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">stack</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M push</td><td class="metric">26.35</td><td>24.73</td><td>33.75</td><td>±2.09%</td></tr><tr><td>1M push (js-sdsl)</td><td class="metric">30.57</td><td>23.52</td><td>129.34</td><td>±15.72%</td></tr><tr><td>Native JS Array 1M push</td><td class="metric">26.72</td><td>21.78</td><td>82.43</td><td>±10.1%</td></tr><tr><td>1M push & pop</td><td class="metric">29.46</td><td>25.81</td><td>102.67</td><td>±8.59%</td></tr><tr><td>1M push & pop (js-sdsl)</td><td class="metric">30.9</td><td>27.97</td><td>44.02</td><td>±2.99%</td></tr><tr><td>Native JS Array 1M push & pop</td><td class="metric">30.61</td><td>25.71</td><td>140.45</td><td>±12.42%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M push</td><td class="metric">1.65</td><td>1.57</td><td>1.73</td><td>±2.50%</td></tr><tr><td>1M push & pop</td><td class="metric">2.62</td><td>2.49</td><td>2.75</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">red-black-tree</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M get</td><td class="metric">100.68</td><td>85.62</td><td>112.14</td><td>±16.94%</td></tr><tr><td>1M get (Node Mode)</td><td class="metric">254.42</td><td>251.82</td><td>256.88</td><td>±0.92%</td></tr><tr><td>1M get (js-sdsl)</td><td class="metric">138.51</td><td>134.92</td><td>141.18</td><td>±2.55%</td></tr><tr><td>200K rangeSearch SEQ</td><td class="metric">1279.47</td><td>1235.27</td><td>1366.88</td><td>±5.59%</td></tr><tr><td>200K rangeSearch RAND</td><td class="metric">1969.15</td><td>1885.88</td><td>2168.54</td><td>±7.23%</td></tr><tr><td>1M upd SEQ</td><td class="metric">79.06</td><td>71.1</td><td>95.84</td><td>±15.75%</td></tr><tr><td>1M upd SEQ (Node Mode)</td><td class="metric">225.95</td><td>215.98</td><td>234.72</td><td>±4.24%</td></tr><tr><td>1M upd SEQ (js-sdsl)</td><td class="metric">171.15</td><td>108.35</td><td>189.92</td><td>±25.55%</td></tr><tr><td>1M upd RAND</td><td class="metric">113.1</td><td>106.36</td><td>118.28</td><td>±5.08%</td></tr><tr><td>1M upd RAND (Node Mode)</td><td class="metric">393.78</td><td>390.08</td><td>401.15</td><td>±1.39%</td></tr><tr><td>1M upd RAND (js-sdsl)</td><td class="metric">302.59</td><td>299.86</td><td>303.59</td><td>±0.64%</td></tr><tr><td>1M ins SEQ</td><td class="metric">567.61</td><td>463.22</td><td>946.06</td><td>±46.30%</td></tr><tr><td>1M ins SEQ (Node Mode)</td><td class="metric">196.91</td><td>194.62</td><td>200.44</td><td>±1.46%</td></tr><tr><td>1M ins SEQ (js-sdsl)</td><td class="metric">89.1</td><td>86.75</td><td>90.48</td><td>±1.95%</td></tr><tr><td>1M ins RAND</td><td class="metric">1611.63</td><td>1585.89</td><td>1631.64</td><td>±1.37%</td></tr><tr><td>1M ins RAND (Node Mode)</td><td class="metric">1169.56</td><td>1164.61</td><td>1175.82</td><td>±0.46%</td></tr><tr><td>1M ins RAND (js-sdsl)</td><td class="metric">825.66</td><td>794.56</td><td>843.73</td><td>±3.45%</td></tr><tr><td>1M keys-only</td><td class="metric">4.0047</td><td>2.711</td><td>5.4122</td><td>±37.29%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M upd SEQ</td><td class="metric">68.43</td><td>65.01</td><td>71.85</td><td>±2.50%</td></tr><tr><td>1M upd SEQ (Node Mode)</td><td class="metric">59.87</td><td>56.88</td><td>62.86</td><td>±2.50%</td></tr><tr><td>1M upd RAND</td><td class="metric">158.14</td><td>150.23</td><td>166.05</td><td>±2.50%</td></tr><tr><td>1M upd RAND (Node Mode)</td><td class="metric">158.48</td><td>150.56</td><td>166.41</td><td>±2.50%</td></tr><tr><td>1M ins SEQ</td><td class="metric">162.72</td><td>154.58</td><td>170.86</td><td>±2.50%</td></tr><tr><td>1M ins SEQ (Node Mode)</td><td class="metric">219.89</td><td>208.89</td><td>230.88</td><td>±2.50%</td></tr><tr><td>1M ins RAND</td><td class="metric">483.56</td><td>459.38</td><td>507.74</td><td>±2.50%</td></tr><tr><td>1M ins RAND (Node Mode)</td><td class="metric">392.74</td><td>373.11</td><td>412.38</td><td>±2.50%</td></tr><tr><td>1M keys-only</td><td class="metric">0.09</td><td>0.08</td><td>0.09</td><td>±2.50%</td></tr><tr><td>1M get</td><td class="metric">52.97</td><td>50.32</td><td>55.62</td><td>±2.50%</td></tr><tr><td>1M get (Node Mode)</td><td class="metric">55.68</td><td>52.9</td><td>58.46</td><td>±2.50%</td></tr><tr><td>Red-Black Tree 1M rangeSearch queries</td><td class="metric">181.5</td><td>172.43</td><td>190.58</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">avl-tree</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K add randomly</td><td class="metric">147.71</td><td>139.72</td><td>165.99</td><td>±1.82%</td></tr><tr><td>100K add</td><td class="metric">120.95</td><td>116.96</td><td>137.67</td><td>±1.33%</td></tr><tr><td>100K get</td><td class="metric">4.6144</td><td>4.1946</td><td>5.3585</td><td>±1.46%</td></tr><tr><td>100K getNode</td><td class="metric">29.31</td><td>28.32</td><td>31.6</td><td>±0.64%</td></tr><tr><td>100K iterator</td><td class="metric">6.5625</td><td>5.9973</td><td>8.4057</td><td>±1.68%</td></tr><tr><td>100K add & delete orderly</td><td class="metric">181.9</td><td>178.51</td><td>189.75</td><td>±0.85%</td></tr><tr><td>100K add & delete randomly</td><td class="metric">224.47</td><td>215.79</td><td>246.42</td><td>±1.71%</td></tr><tr><td>AVL Tree 100K rangeSearch queries</td><td class="metric">1388.54</td><td>1359.91</td><td>1417.61</td><td>±2.01%</td></tr></tbody></table></div><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K add randomly</td><td class="metric">16.62</td><td>15.79</td><td>17.45</td><td>±2.50%</td></tr><tr><td>100K add</td><td class="metric">15.48</td><td>14.71</td><td>16.26</td><td>±2.50%</td></tr><tr><td>100K get</td><td class="metric">7.21</td><td>6.85</td><td>7.57</td><td>±2.50%</td></tr><tr><td>100K getNode</td><td class="metric">8.51</td><td>8.08</td><td>8.93</td><td>±2.50%</td></tr><tr><td>100K iterator</td><td class="metric">1.06</td><td>1</td><td>1.11</td><td>±2.50%</td></tr><tr><td>100K add & delete orderly</td><td class="metric">21.56</td><td>20.48</td><td>22.64</td><td>±2.50%</td></tr><tr><td>100K add & delete randomly</td><td class="metric">27.96</td><td>26.56</td><td>29.35</td><td>±2.50%</td></tr><tr><td>AVL Tree 100K rangeSearch queries</td><td class="metric">111.9</td><td>106.31</td><td>117.5</td><td>±2.50%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">bst</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>10K add randomly</td><td class="metric">5.8064</td><td>5.3484</td><td>15.4658</td><td>±4.27%</td></tr><tr><td>10K add & delete randomly</td><td class="metric">10.21</td><td>9.92</td><td>12.41</td><td>±0.88%</td></tr><tr><td>10K addMany</td><td class="metric">10.98</td><td>10.25</td><td>23.9</td><td>±3.17%</td></tr><tr><td>10K get</td><td class="metric">11.91</td><td>10.99</td><td>15.31</td><td>±2.1%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">trie</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K add</td><td class="metric">24.78</td><td>22.08</td><td>35.79</td><td>±3.49%</td></tr><tr><td>100K getWords</td><td class="metric">117.75</td><td>99.64</td><td>202.76</td><td>±9.14%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">directed-graph</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1K addVertex</td><td class="metric">0.0446</td><td>0.0436</td><td>0.0557</td><td>±0.63%</td></tr><tr><td>1K addEdge</td><td class="metric">2.9426</td><td>2.7818</td><td>4.3713</td><td>±1.7%</td></tr><tr><td>1K getVertex</td><td class="metric">0.0382</td><td>0.0374</td><td>0.0441</td><td>±0.51%</td></tr><tr><td>1K getEdge</td><td class="metric">48.53</td><td>43.18</td><td>107.27</td><td>±6.34%</td></tr><tr><td>tarjan</td><td class="metric">263.6</td><td>253.45</td><td>298.73</td><td>±2.51%</td></tr><tr><td>topologicalSort</td><td class="metric">221.51</td><td>213.7</td><td>246.27</td><td>±2.5%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">binary-tree</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1K add randomly</td><td class="metric">10.65</td><td>10.42</td><td>11.19</td><td>±0.32%</td></tr><tr><td>1K add & delete randomly</td><td class="metric">11.23</td><td>10.49</td><td>26.02</td><td>±4.51%</td></tr><tr><td>1K addMany</td><td class="metric">10.58</td><td>10.29</td><td>11.22</td><td>±0.35%</td></tr><tr><td>1K get</td><td class="metric">11.11</td><td>10.32</td><td>22.68</td><td>±3.53%</td></tr><tr><td>1K has</td><td class="metric">11</td><td>10.3</td><td>23.76</td><td>±4.21%</td></tr><tr><td>1K dfs</td><td class="metric">141.08</td><td>139.05</td><td>144.34</td><td>±0.46%</td></tr><tr><td>1K bfs</td><td class="metric">47.83</td><td>46.69</td><td>55.65</td><td>±0.98%</td></tr><tr><td>1K morris</td><td class="metric">55.82</td><td>54.62</td><td>59.95</td><td>±0.44%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">priority-queue</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>100K add</td><td class="metric">4.366</td><td>4.2775</td><td>5.0309</td><td>±0.55%</td></tr><tr><td>100K add (js-sdsl)</td><td class="metric">5.6519</td><td>5.4758</td><td>7.143</td><td>±0.78%</td></tr><tr><td>100K add & poll</td><td class="metric">26.13</td><td>25.54</td><td>26.9</td><td>±0.4%</td></tr><tr><td>100K add & poll (js-sdsl)</td><td class="metric">26.89</td><td>26.43</td><td>27.84</td><td>±0.42%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">queue</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-js">data-structure-typed</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>1M push</td><td class="metric">28.91</td><td>24.9</td><td>73.74</td><td>±6.24%</td></tr><tr><td>100K push & shift</td><td class="metric">3.0798</td><td>2.6563</td><td>17.8644</td><td>±11.62%</td></tr><tr><td>Native JS Array 1M push</td><td class="metric">26.31</td><td>23.29</td><td>48.57</td><td>±4.82%</td></tr><tr><td>Native JS Array 100K push & shift</td><td class="metric">1403.59</td><td>1089.63</td><td>2431.97</td><td>±39.71%</td></tr><tr><td>1M push (js-sdsl)</td><td class="metric">54.13</td><td>31.96</td><td>128.99</td><td>±8.88%</td></tr><tr><td>100K push & shift (js-sdsl)</td><td class="metric">2.5642</td><td>2.4196</td><td>2.8011</td><td>±0.77%</td></tr></tbody></table></div></div></div><div class="test-section"><div class="test-name">avl-rb-range-search</div><div class="comparison"><div class="comparison-column"><div class="comparison-header lang-cpp">C++</div><table><thead><tr><th>Test Case</th><th>Avg (ms)</th><th>Min (ms)</th><th>Max (ms)</th><th>Stability</th></tr></thead><tbody><tr><td>Red-Black Tree 1M rangeSearch</td><td class="metric">0</td><td>0</td><td>0</td><td>±2.50%</td></tr><tr><td>AVL Tree 100K add</td><td class="metric">20.73</td><td>19.7</td><td>21.77</td><td>±2.50%</td></tr><tr><td>Red-Black Tree 1M add</td><td class="metric">420.68</td><td>399.65</td><td>441.71</td><td>±2.50%</td></tr></tbody></table></div></div></div></div></body></html>
|
|
198
|
+
|
|
199
|
+
<div class="toc">
|
|
200
|
+
<h3>📋 Table of Contents</h3>
|
|
201
|
+
<ul>
|
|
202
|
+
<li><a href="#doublylinkedlist">DoublyLinkedList</a></li>
|
|
203
|
+
<li><a href="#singlylinkedlist">SinglyLinkedList</a></li>
|
|
204
|
+
<li><a href="#hashmap">HashMap</a></li>
|
|
205
|
+
<li><a href="#queue">Queue</a></li>
|
|
206
|
+
<li><a href="#deque">Deque</a></li>
|
|
207
|
+
<li><a href="#priorityqueue">PriorityQueue</a></li>
|
|
208
|
+
<li><a href="#stack">Stack</a></li>
|
|
209
|
+
<li><a href="#redblacktree">RedBlackTree</a></li>
|
|
210
|
+
<li><a href="#avltree">AVLTree</a></li>
|
|
211
|
+
<li><a href="#treeset">TreeSet</a></li>
|
|
212
|
+
<li><a href="#treemap">TreeMap</a></li>
|
|
213
|
+
<li><a href="#treemultiset">TreeMultiSet</a></li>
|
|
214
|
+
<li><a href="#treemultimap">TreeMultiMap</a></li>
|
|
215
|
+
<li><a href="#bst">BST</a></li>
|
|
216
|
+
<li><a href="#binarytree">BinaryTree</a></li>
|
|
217
|
+
<li><a href="#trie">Trie</a></li>
|
|
218
|
+
<li><a href="#directedgraph">DirectedGraph</a></li>
|
|
219
|
+
</ul>
|
|
220
|
+
</div>
|
|
221
|
+
<div class="test-section" id="doublylinkedlist"><div class="test-name">DoublyLinkedList</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>100k push</td><td class="metric-dst">5.1068</td><td class="metric-sdsl">1.9662</td><td class="metric-native">1.9327</td><td class="metric-cpp">5.7</td></tr><tr><td>100k unshift</td><td class="metric-dst">5.6251</td><td class="metric-sdsl">1.6535</td><td class="metric-native">897.47</td><td class="metric-cpp">5.85</td></tr><tr><td>100k unshift & shift</td><td class="metric-dst">3.9617</td><td class="metric-sdsl">1.9021</td><td class="metric-native">2229.86</td><td class="metric-cpp">5.74</td></tr><tr><td>100k addAt(mid)</td><td class="metric-dst">1377.93</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">754.81</td></tr><tr><td>100k addBefore (cursor)</td><td class="metric-dst">6.8479</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">6.18</td></tr></tbody></table></div><div class="test-section" id="singlylinkedlist"><div class="test-name">SinglyLinkedList</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>100K unshift & shift</td><td class="metric-dst">3.657</td><td class="na">-</td><td class="metric-native">1954.99</td><td class="metric-cpp">4.8</td></tr><tr><td>10K unshift & shift</td><td class="metric-dst">0.3519</td><td class="na">-</td><td class="metric-native">6.3455</td><td class="metric-cpp">0.47</td></tr><tr><td>10K addAt(mid)</td><td class="metric-dst">9.6426</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">5.77</td></tr><tr><td>10K addBefore (cursor)</td><td class="metric-dst">17.47</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">0.53</td></tr></tbody></table></div><div class="test-section" id="hashmap"><div class="test-name">HashMap</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M set</td><td class="metric-dst">65.43</td><td class="metric-sdsl">89.7</td><td class="metric-native">158.98</td><td class="metric-cpp">76.26</td></tr><tr><td>1M set & get</td><td class="metric-dst">81.86</td><td class="metric-sdsl">72.97</td><td class="metric-native">212.83</td><td class="metric-cpp">75.25</td></tr><tr><td>1M ObjKey set & get</td><td class="metric-dst">249</td><td class="metric-sdsl">399.01</td><td class="metric-native">223.97</td><td class="metric-cpp">84.4</td></tr></tbody></table></div><div class="test-section" id="queue"><div class="test-name">Queue</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M push</td><td class="metric-dst">29.46</td><td class="metric-sdsl">33.31</td><td class="metric-native">25.29</td><td class="metric-cpp">1.7</td></tr><tr><td>100K push & shift</td><td class="metric-dst">3.3554</td><td class="metric-sdsl">3.0014</td><td class="metric-native">1160.09</td><td class="metric-cpp">0.2</td></tr></tbody></table></div><div class="test-section" id="deque"><div class="test-name">Deque</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M push</td><td class="metric-dst">10.98</td><td class="metric-sdsl">7.8495</td><td class="metric-native">24.28</td><td class="metric-cpp">1.76</td></tr><tr><td>1M push & pop</td><td class="metric-dst">11.56</td><td class="metric-sdsl">12.14</td><td class="metric-native">30.68</td><td class="metric-cpp">2.2</td></tr><tr><td>1M push & shift</td><td class="metric-dst">10.95</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1.94</td></tr><tr><td>100K push & shift</td><td class="metric-dst">1.395</td><td class="metric-sdsl">1.1509</td><td class="metric-native">1255.31</td><td class="metric-cpp">0.19</td></tr><tr><td>100K unshift & shift</td><td class="metric-dst">1.1966</td><td class="metric-sdsl">1.1638</td><td class="metric-native">1980.94</td><td class="metric-cpp">0.19</td></tr></tbody></table></div><div class="test-section" id="priorityqueue"><div class="test-name">PriorityQueue</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>100K add</td><td class="metric-dst">4.5393</td><td class="metric-sdsl">5.0825</td><td class="na">-</td><td class="metric-cpp">1.05</td></tr><tr><td>100K add & poll</td><td class="metric-dst">22.77</td><td class="metric-sdsl">23.18</td><td class="na">-</td><td class="metric-cpp">4.53</td></tr></tbody></table></div><div class="test-section" id="stack"><div class="test-name">Stack</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M push</td><td class="metric-dst">28.46</td><td class="metric-sdsl">31.41</td><td class="metric-native">24.84</td><td class="metric-cpp">1.65</td></tr><tr><td>1M push & pop</td><td class="metric-dst">28.99</td><td class="metric-sdsl">32.2</td><td class="metric-native">28.46</td><td class="metric-cpp">2.62</td></tr></tbody></table></div><div class="test-section" id="redblacktree"><div class="test-name">RedBlackTree</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>Node Mode (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M get</td><td class="metric-dst">98.97</td><td class="metric-dst">259.04</td><td class="metric-sdsl">137.55</td><td class="na">-</td><td class="metric-cpp">52.97</td></tr><tr><td>200K rangeSearch SEQ</td><td class="metric-dst">1150.86</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>200K rangeSearch RAND</td><td class="metric-dst">1612.65</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M upd SEQ</td><td class="metric-dst">81.06</td><td class="metric-dst">229.33</td><td class="metric-sdsl">174.39</td><td class="na">-</td><td class="metric-cpp">68.43</td></tr><tr><td>1M upd RAND</td><td class="metric-dst">110.29</td><td class="metric-dst">378.95</td><td class="metric-sdsl">301.59</td><td class="na">-</td><td class="metric-cpp">158.14</td></tr><tr><td>1M ins SEQ</td><td class="metric-dst">544.99</td><td class="metric-dst">194</td><td class="metric-sdsl">86.56</td><td class="na">-</td><td class="metric-cpp">162.72</td></tr><tr><td>1M ins RAND</td><td class="metric-dst">1025.93</td><td class="metric-dst">906.98</td><td class="metric-sdsl">636.16</td><td class="na">-</td><td class="metric-cpp">483.56</td></tr><tr><td>1M keys-only</td><td class="metric-dst">3.8192</td><td class="na">-</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">0.09</td></tr></tbody></table></div><div class="test-section" id="avltree"><div class="test-name">AVLTree</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>100K add randomly</td><td class="metric-dst">146.42</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">16.62</td></tr><tr><td>100K add</td><td class="metric-dst">120.24</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">15.48</td></tr><tr><td>100K get</td><td class="metric-dst">4.6116</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">7.21</td></tr><tr><td>100K getNode</td><td class="metric-dst">31.34</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">8.51</td></tr><tr><td>100K iterator</td><td class="metric-dst">6.1388</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1.06</td></tr><tr><td>100K add & delete orderly</td><td class="metric-dst">180.78</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">21.56</td></tr><tr><td>100K add & delete randomly</td><td class="metric-dst">218.68</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">27.96</td></tr><tr><td>AVL Tree 100K rangeSearch queries</td><td class="metric-dst">1352.3</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">111.9</td></tr></tbody></table></div><div class="test-section" id="treeset"><div class="test-name">TreeSet</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M add TreeSet</td><td class="metric-dst">1011.82</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">462</td></tr><tr><td>1M add TreeSet (Node)</td><td class="metric-dst">912.3</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">462</td></tr><tr><td>1M add RBT</td><td class="metric-dst">1167.06</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">462</td></tr><tr><td>1M add RBT (Node)</td><td class="metric-dst">975.7</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">462</td></tr><tr><td>1M add js-sdsl</td><td class="metric-dst">642.32</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M has TreeSet</td><td class="metric-dst">65.41</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">444</td></tr><tr><td>1M has TreeSet (Node)</td><td class="metric-dst">809.01</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">444</td></tr><tr><td>1M has RBT</td><td class="metric-dst">67.48</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">444</td></tr><tr><td>1M has RBT (Node)</td><td class="metric-dst">1034.91</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">444</td></tr><tr><td>1M has js-sdsl</td><td class="metric-dst">761.43</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M build+has TreeSet</td><td class="metric-dst">1096.77</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">837</td></tr><tr><td>1M build+has TreeSet (Node)</td><td class="metric-dst">1732.51</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">837</td></tr><tr><td>1M build+has RBT</td><td class="metric-dst">1155.43</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">837</td></tr><tr><td>1M build+has RBT (Node)</td><td class="metric-dst">1867.76</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">837</td></tr><tr><td>1M build+has js-sdsl</td><td class="metric-dst">1311.66</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K rangeSearch TreeSet</td><td class="metric-dst">20.83</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K rangeSearch TreeSet (Node)</td><td class="metric-dst">20.74</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K navigable TreeSet</td><td class="metric-dst">110.15</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K navigable TreeSet (Node)</td><td class="metric-dst">106.73</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+rangeSearch TreeSet</td><td class="metric-dst">1059.08</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+rangeSearch TreeSet (Node)</td><td class="metric-dst">929.91</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+navigable TreeSet</td><td class="metric-dst">1201.07</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+navigable TreeSet (Node)</td><td class="metric-dst">1004.24</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="treemap"><div class="test-name">TreeMap</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M set TreeMap</td><td class="metric-dst">1130.7</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">512</td></tr><tr><td>1M set TreeMap (Node)</td><td class="metric-dst">904.29</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">512</td></tr><tr><td>1M set RBT</td><td class="metric-dst">1146.79</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">512</td></tr><tr><td>1M set RBT (Node)</td><td class="metric-dst">968.9</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">512</td></tr><tr><td>1M set js-sdsl</td><td class="metric-dst">640.34</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M get TreeMap</td><td class="metric-dst">156.38</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">322</td></tr><tr><td>1M get TreeMap (Node)</td><td class="metric-dst">867.81</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">322</td></tr><tr><td>1M get RBT</td><td class="metric-dst">156.19</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">322</td></tr><tr><td>1M get RBT (Node)</td><td class="metric-dst">916.83</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">322</td></tr><tr><td>1M get js-sdsl</td><td class="metric-dst">672.22</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M build+get TreeMap</td><td class="metric-dst">1262.71</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">819</td></tr><tr><td>1M build+get TreeMap (Node)</td><td class="metric-dst">1712.26</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">819</td></tr><tr><td>1M build+get RBT</td><td class="metric-dst">1215.09</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">819</td></tr><tr><td>1M build+get RBT (Node)</td><td class="metric-dst">1811.83</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">819</td></tr><tr><td>1M build+get js-sdsl</td><td class="metric-dst">1213.71</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K rangeSearch TreeMap</td><td class="metric-dst">53.07</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K rangeSearch TreeMap (Node)</td><td class="metric-dst">54.02</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K navigable TreeMap</td><td class="metric-dst">174.8</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K navigable TreeMap (Node)</td><td class="metric-dst">272.56</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+rangeSearch TreeMap</td><td class="metric-dst">1183.72</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+rangeSearch TreeMap (Node)</td><td class="metric-dst">954.72</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+navigable TreeMap</td><td class="metric-dst">1205.71</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K build+navigable TreeMap (Node)</td><td class="metric-dst">1178.08</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="treemultiset"><div class="test-name">TreeMultiSet</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M add (TreeMultiSet expanded iteration)</td><td class="metric-dst">233.76</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">752</td></tr><tr><td>1M has-only (TreeMultiSet)</td><td class="metric-dst">130.14</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">756</td></tr><tr><td>1M count-only (TreeMultiSet)</td><td class="metric-dst">73.21</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1332</td></tr><tr><td>1M build+has (TreeMultiSet)</td><td class="metric-dst">368.22</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1406</td></tr><tr><td>1M build+count (TreeMultiSet)</td><td class="metric-dst">307.33</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1909</td></tr><tr><td>100K delete-one (TreeMultiSet)</td><td class="metric-dst">246.79</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K setCount (TreeMultiSet)</td><td class="metric-dst">251.85</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M expanded iteration (TreeMultiSet)</td><td class="metric-dst">59.63</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M entries view (TreeMultiSet)</td><td class="metric-dst">19.68</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M size property (TreeMultiSet)</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M distinctSize property (TreeMultiSet)</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="treemultimap"><div class="test-name">TreeMultiMap</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1M add (TreeMultiMap bucketed)</td><td class="metric-dst">388.73</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">731</td></tr><tr><td>1M has-only (TreeMultiMap)</td><td class="metric-dst">30.79</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">833</td></tr><tr><td>1M get-only (TreeMultiMap)</td><td class="metric-dst">73.67</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1553</td></tr><tr><td>1M count-only (TreeMultiMap)</td><td class="metric-dst">206.68</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1548</td></tr><tr><td>1M build+has (TreeMultiMap)</td><td class="metric-dst">452.55</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">1519</td></tr><tr><td>1M build+get (TreeMultiMap)</td><td class="metric-dst">477.45</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">2263</td></tr><tr><td>100K hasEntry (TreeMultiMap Object.is)</td><td class="metric-dst">450.09</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K deleteValue (TreeMultiMap Object.is)</td><td class="metric-dst">435.96</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K firstEntry/lastEntry (TreeMultiMap)</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K ceilingEntry/floorEntry (TreeMultiMap)</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M bucket iteration (TreeMultiMap)</td><td class="metric-dst">28.09</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">109</td></tr><tr><td>1M flatEntries iteration (TreeMultiMap)</td><td class="metric-dst">135.75</td><td class="na">-</td><td class="na">-</td><td class="metric-cpp">109</td></tr><tr><td>1M size property (TreeMultiMap)</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1M totalSize property (TreeMultiMap)</td><td class="metric-dst">27.13</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="bst"><div class="test-name">BST</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>10K add randomly</td><td class="metric-dst">6.2675</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>10K add & delete randomly</td><td class="metric-dst">11.03</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>10K addMany</td><td class="metric-dst">11.93</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>10K get</td><td class="metric-dst">16.92</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="binarytree"><div class="test-name">BinaryTree</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1K add randomly</td><td class="metric-dst">11.09</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K add & delete randomly</td><td class="metric-dst">11.2</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K addMany</td><td class="metric-dst">11.06</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K get</td><td class="metric-dst">11.08</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K has</td><td class="metric-dst">14.68</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K dfs</td><td class="metric-dst">108.11</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K bfs</td><td class="metric-dst">46.99</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K morris</td><td class="metric-dst">41.61</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="trie"><div class="test-name">Trie</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>100K add</td><td class="metric-dst">257.47</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>100K getWords</td><td class="metric-dst">15858.61</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div><div class="test-section" id="directedgraph"><div class="test-name">DirectedGraph</div><p class="note">Comparison table: DST is data-structure-typed. Values in ms (lower is better). "-" = no equivalent test.</p><table><thead><tr><th>Test Case</th><th>DST (ms)</th><th>js-sdsl (ms)</th><th>Native (ms)</th><th>C++ (ms)</th></tr></thead><tbody><tr><td>1K addVertex</td><td class="metric-dst">0.0532</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K addEdge</td><td class="metric-dst">0</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K getVertex</td><td class="metric-dst">38.93</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>1K getEdge</td><td class="metric-dst">77.81</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>tarjan</td><td class="metric-dst">0.4219</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr><tr><td>topologicalSort</td><td class="metric-dst">0.2641</td><td class="na">-</td><td class="na">-</td><td class="na">-</td></tr></tbody></table></div></div></body></html>
|