data-structure-typed 1.46.4 → 1.46.6

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 (49) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +65 -79
  3. package/benchmark/report.html +46 -1
  4. package/benchmark/report.json +428 -5
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +2 -1
  6. package/dist/cjs/data-structures/binary-tree/binary-tree.js +29 -46
  7. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/rb-tree.js +10 -5
  9. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  10. package/dist/cjs/data-structures/hash/hash-map.d.ts +2 -2
  11. package/dist/cjs/data-structures/hash/hash-map.js +1 -2
  12. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  13. package/dist/cjs/types/{helpers.js → common.js} +1 -1
  14. package/dist/cjs/types/common.js.map +1 -0
  15. package/dist/cjs/types/data-structures/hash/hash-map.d.ts +1 -1
  16. package/dist/cjs/types/index.d.ts +1 -1
  17. package/dist/cjs/types/index.js +1 -1
  18. package/dist/cjs/types/index.js.map +1 -1
  19. package/dist/cjs/utils/utils.d.ts +1 -1
  20. package/dist/cjs/utils/utils.js.map +1 -1
  21. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +2 -1
  22. package/dist/mjs/data-structures/binary-tree/binary-tree.js +29 -46
  23. package/dist/mjs/data-structures/binary-tree/rb-tree.js +10 -5
  24. package/dist/mjs/data-structures/hash/hash-map.d.ts +2 -2
  25. package/dist/mjs/data-structures/hash/hash-map.js +1 -2
  26. package/dist/mjs/types/data-structures/hash/hash-map.d.ts +1 -1
  27. package/dist/mjs/types/index.d.ts +1 -1
  28. package/dist/mjs/types/index.js +1 -1
  29. package/dist/mjs/utils/utils.d.ts +1 -1
  30. package/dist/umd/data-structure-typed.js +33 -51
  31. package/dist/umd/data-structure-typed.min.js +10 -5
  32. package/dist/umd/data-structure-typed.min.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/data-structures/binary-tree/binary-tree.ts +33 -46
  35. package/src/data-structures/binary-tree/rb-tree.ts +9 -4
  36. package/src/data-structures/hash/hash-map.ts +4 -5
  37. package/src/types/data-structures/hash/hash-map.ts +1 -1
  38. package/src/types/index.ts +1 -1
  39. package/src/utils/utils.ts +1 -1
  40. package/test/integration/index.html +32 -23
  41. package/test/performance/data-structures/{comparison.test.ts → comparison/comparison.test.ts} +34 -28
  42. package/test/performance/data-structures/hash/hash-map.test.ts +3 -3
  43. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +17 -0
  44. package/tsup.config.js +1 -1
  45. package/dist/cjs/types/helpers.js.map +0 -1
  46. /package/dist/cjs/types/{helpers.d.ts → common.d.ts} +0 -0
  47. /package/dist/mjs/types/{helpers.d.ts → common.d.ts} +0 -0
  48. /package/dist/mjs/types/{helpers.js → common.js} +0 -0
  49. /package/src/types/{helpers.ts → common.ts} +0 -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
- ## [v1.46.4](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
11
+ ## [v1.46.6](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming)
12
12
 
13
13
  ### Changes
14
14
 
package/README.md CHANGED
@@ -71,54 +71,6 @@ const {
71
71
  } = dataStructureTyped;
72
72
  ```
73
73
 
74
- ## Software Engineering Design Standards
75
- <table>
76
- <tr>
77
- <th>Principle</th>
78
- <th>Description</th>
79
- </tr>
80
- <tr>
81
- <td>Practicality</td>
82
- <td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
83
- </tr>
84
- <tr>
85
- <td>Extensibility</td>
86
- <td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
87
- </tr>
88
- <tr>
89
- <td>Modularization</td>
90
- <td>Includes data structure modularization and independent NPM packages.</td>
91
- </tr>
92
- <tr>
93
- <td>Efficiency</td>
94
- <td>All methods provide time and space complexity, comparable to native JS performance.</td>
95
- </tr>
96
- <tr>
97
- <td>Maintainability</td>
98
- <td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
99
- </tr>
100
- <tr>
101
- <td>Testability</td>
102
- <td>Automated and customized unit testing, performance testing, and integration testing.</td>
103
- </tr>
104
- <tr>
105
- <td>Portability</td>
106
- <td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
107
- </tr>
108
- <tr>
109
- <td>Reusability</td>
110
- <td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
111
- </tr>
112
- <tr>
113
- <td>Security</td>
114
- <td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
115
- </tr>
116
- <tr>
117
- <td>Scalability</td>
118
- <td>Data structure software does not involve load issues.</td>
119
- </tr>
120
- </table>
121
-
122
74
  ## Vivid Examples
123
75
 
124
76
  ### Binary Tree
@@ -807,68 +759,102 @@ Array.from(dijkstraResult?.seen ?? []).map(vertex => vertex.key) // ['A', 'B', '
807
759
 
808
760
  [//]: # (No deletion!!! Start of Replace Section)
809
761
  <div class="json-to-html-collapse clearfix 0">
810
- <div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
811
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC 10,000 add</td><td>0.57</td><td>1745.58</td><td>5.41e-6</td></tr><tr><td>CJS 10,000 add</td><td>0.57</td><td>1751.77</td><td>4.80e-6</td></tr><tr><td>MJS 10,000 add</td><td>0.57</td><td>1749.46</td><td>6.15e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.42</td><td>292.80</td><td>2.97e-5</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.40</td><td>293.71</td><td>3.10e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.41</td><td>293.62</td><td>3.51e-5</td></tr></table></div>
812
- </div><div class="json-to-html-collapse clearfix 0">
813
762
  <div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
814
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.25</td><td>32.00</td><td>3.13e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>71.87</td><td>13.91</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>41.06</td><td>24.36</td><td>4.25e-4</td></tr><tr><td>10,000 get</td><td>28.10</td><td>35.59</td><td>2.51e-4</td></tr></table></div>
763
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.32</td><td>31.93</td><td>3.67e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>70.90</td><td>14.10</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>40.58</td><td>24.64</td><td>4.87e-4</td></tr><tr><td>10,000 get</td><td>27.31</td><td>36.62</td><td>2.00e-4</td></tr></table></div>
815
764
  </div><div class="json-to-html-collapse clearfix 0">
816
765
  <div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
817
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>13.02</td><td>76.79</td><td>1.25e-4</td></tr><tr><td>1,000 add & delete randomly</td><td>15.86</td><td>63.05</td><td>1.08e-4</td></tr><tr><td>1,000 addMany</td><td>10.26</td><td>97.46</td><td>7.97e-5</td></tr><tr><td>1,000 get</td><td>18.35</td><td>54.49</td><td>3.12e-4</td></tr><tr><td>1,000 dfs</td><td>154.50</td><td>6.47</td><td>7.28e-4</td></tr><tr><td>1,000 bfs</td><td>56.53</td><td>17.69</td><td>3.74e-4</td></tr><tr><td>1,000 morris</td><td>257.07</td><td>3.89</td><td>0.00</td></tr></table></div>
766
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>12.35</td><td>80.99</td><td>7.17e-5</td></tr><tr><td>1,000 add & delete randomly</td><td>15.98</td><td>62.58</td><td>7.98e-4</td></tr><tr><td>1,000 addMany</td><td>10.96</td><td>91.27</td><td>0.00</td></tr><tr><td>1,000 get</td><td>18.61</td><td>53.73</td><td>0.00</td></tr><tr><td>1,000 dfs</td><td>164.20</td><td>6.09</td><td>0.04</td></tr><tr><td>1,000 bfs</td><td>58.84</td><td>17.00</td><td>0.01</td></tr><tr><td>1,000 morris</td><td>256.66</td><td>3.90</td><td>7.70e-4</td></tr></table></div>
818
767
  </div><div class="json-to-html-collapse clearfix 0">
819
768
  <div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
820
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>28.25</td><td>35.40</td><td>3.07e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>67.69</td><td>14.77</td><td>8.51e-4</td></tr><tr><td>10,000 addMany</td><td>29.25</td><td>34.19</td><td>0.00</td></tr><tr><td>10,000 get</td><td>28.77</td><td>34.76</td><td>2.55e-4</td></tr></table></div>
769
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.59</td><td>31.66</td><td>2.74e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>74.56</td><td>13.41</td><td>8.32e-4</td></tr><tr><td>10,000 addMany</td><td>29.16</td><td>34.30</td><td>0.00</td></tr><tr><td>10,000 get</td><td>29.24</td><td>34.21</td><td>0.00</td></tr></table></div>
821
770
  </div><div class="json-to-html-collapse clearfix 0">
822
771
  <div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
823
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>86.88</td><td>11.51</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>215.71</td><td>4.64</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>40.78</td><td>24.52</td><td>3.22e-4</td></tr></table></div>
772
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>85.85</td><td>11.65</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>211.54</td><td>4.73</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>37.92</td><td>26.37</td><td>1.65e-4</td></tr></table></div>
773
+ </div><div class="json-to-html-collapse clearfix 0">
774
+ <div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
775
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC PQ 10,000 add</td><td>0.57</td><td>1748.73</td><td>4.96e-6</td></tr><tr><td>CJS PQ 10,000 add</td><td>0.57</td><td>1746.69</td><td>4.91e-6</td></tr><tr><td>MJS PQ 10,000 add</td><td>0.57</td><td>1749.68</td><td>4.43e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.47</td><td>288.14</td><td>6.38e-4</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.39</td><td>295.36</td><td>3.90e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.37</td><td>297.17</td><td>3.03e-5</td></tr></table></div>
824
776
  </div><div class="json-to-html-collapse clearfix 0">
825
777
  <div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
826
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9992.98</td><td>8.63e-7</td></tr><tr><td>1,000 addEdge</td><td>6.11</td><td>163.74</td><td>1.31e-4</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>6.15e-7</td></tr><tr><td>1,000 getEdge</td><td>23.01</td><td>43.45</td><td>0.00</td></tr><tr><td>tarjan</td><td>222.33</td><td>4.50</td><td>0.02</td></tr><tr><td>tarjan all</td><td>224.99</td><td>4.44</td><td>0.02</td></tr><tr><td>topologicalSort</td><td>177.80</td><td>5.62</td><td>0.01</td></tr></table></div>
778
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9534.93</td><td>8.72e-7</td></tr><tr><td>1,000 addEdge</td><td>6.30</td><td>158.67</td><td>0.00</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>3.03e-7</td></tr><tr><td>1,000 getEdge</td><td>22.31</td><td>44.82</td><td>0.00</td></tr><tr><td>tarjan</td><td>210.90</td><td>4.74</td><td>0.01</td></tr><tr><td>tarjan all</td><td>214.72</td><td>4.66</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>172.52</td><td>5.80</td><td>0.00</td></tr></table></div>
827
779
  </div><div class="json-to-html-collapse clearfix 0">
828
780
  <div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
829
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 set</td><td>0.99</td><td>1006.45</td><td>2.07e-5</td></tr><tr><td>10,000 set & get</td><td>1.49</td><td>669.20</td><td>2.66e-5</td></tr></table></div>
781
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>275.88</td><td>3.62</td><td>0.12</td></tr><tr><td>1,000,000 Map set</td><td>211.66</td><td>4.72</td><td>0.01</td></tr><tr><td>1,000,000 Set add</td><td>177.72</td><td>5.63</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>317.60</td><td>3.15</td><td>0.02</td></tr><tr><td>1,000,000 Map set & get</td><td>274.99</td><td>3.64</td><td>0.03</td></tr><tr><td>1,000,000 Set add & has</td><td>172.23</td><td>5.81</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>929.40</td><td>1.08</td><td>0.07</td></tr><tr><td>1,000,000 Map ObjKey set & get</td><td>310.02</td><td>3.23</td><td>0.05</td></tr><tr><td>1,000,000 Set ObjKey add & has</td><td>283.28</td><td>3.53</td><td>0.04</td></tr></table></div>
830
782
  </div><div class="json-to-html-collapse clearfix 0">
831
783
  <div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
832
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.78</td><td>172.88</td><td>4.96e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.91</td><td>2.79</td><td>0.01</td></tr></table></div>
784
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.80</td><td>172.35</td><td>8.78e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.92</td><td>2.79</td><td>0.00</td></tr></table></div>
833
785
  </div><div class="json-to-html-collapse clearfix 0">
834
786
  <div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
835
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>207.57</td><td>4.82</td><td>0.04</td></tr><tr><td>1,000,000 unshift</td><td>224.17</td><td>4.46</td><td>0.10</td></tr><tr><td>1,000,000 unshift & shift</td><td>170.27</td><td>5.87</td><td>0.04</td></tr><tr><td>1,000,000 insertBefore</td><td>325.71</td><td>3.07</td><td>0.08</td></tr></table></div>
787
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>221.57</td><td>4.51</td><td>0.03</td></tr><tr><td>1,000,000 unshift</td><td>229.02</td><td>4.37</td><td>0.07</td></tr><tr><td>1,000,000 unshift & shift</td><td>169.21</td><td>5.91</td><td>0.02</td></tr><tr><td>1,000,000 insertBefore</td><td>314.48</td><td>3.18</td><td>0.07</td></tr></table></div>
836
788
  </div><div class="json-to-html-collapse clearfix 0">
837
789
  <div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
838
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>223.42</td><td>4.48</td><td>0.02</td></tr><tr><td>10,000 insertBefore</td><td>253.67</td><td>3.94</td><td>0.02</td></tr></table></div>
790
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>212.98</td><td>4.70</td><td>0.01</td></tr><tr><td>10,000 insertBefore</td><td>250.68</td><td>3.99</td><td>0.01</td></tr></table></div>
839
791
  </div><div class="json-to-html-collapse clearfix 0">
840
792
  <div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
841
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>10.51</td><td>95.16</td><td>0.01</td></tr></table></div>
793
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>8.91</td><td>112.29</td><td>2.26e-4</td></tr></table></div>
842
794
  </div><div class="json-to-html-collapse clearfix 0">
843
795
  <div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
844
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>105.61</td><td>9.47</td><td>0.00</td></tr></table></div>
796
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>103.59</td><td>9.65</td><td>0.00</td></tr></table></div>
845
797
  </div><div class="json-to-html-collapse clearfix 0">
846
798
  <div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
847
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.01</td><td>71.39</td><td>4.74e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.12</td><td>43.25</td><td>6.61e-4</td></tr><tr><td>1,000,000 push & shift</td><td>25.00</td><td>40.00</td><td>0.01</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.04</td><td>45.38</td><td>2.90e-4</td></tr></table></div>
799
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.55</td><td>68.72</td><td>6.91e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.40</td><td>42.73</td><td>5.94e-4</td></tr><tr><td>1,000,000 push & shift</td><td>24.41</td><td>40.97</td><td>1.45e-4</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.56</td><td>44.32</td><td>1.30e-4</td></tr></table></div>
848
800
  </div><div class="json-to-html-collapse clearfix 0">
849
801
  <div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
850
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>48.25</td><td>20.72</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>83.38</td><td>11.99</td><td>0.00</td></tr></table></div>
802
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>39.90</td><td>25.07</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>81.79</td><td>12.23</td><td>0.00</td></tr></table></div>
851
803
  </div><div class="json-to-html-collapse clearfix 0">
852
804
  <div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
853
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>45.02</td><td>22.21</td><td>0.01</td></tr><tr><td>1,000,000 push & pop</td><td>58.63</td><td>17.06</td><td>0.03</td></tr></table></div>
805
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>37.60</td><td>26.60</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>47.01</td><td>21.27</td><td>0.00</td></tr></table></div>
854
806
  </div><div class="json-to-html-collapse clearfix 0">
855
807
  <div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
856
- <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>44.82</td><td>22.31</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>111.82</td><td>8.94</td><td>0.05</td></tr></table></div>
808
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>45.97</td><td>21.76</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>66.20</td><td>15.11</td><td>0.00</td></tr></table></div>
857
809
  </div>
858
810
 
859
811
  [//]: # (No deletion!!! End of Replace Section)
860
812
 
861
813
 
862
- ## Codebase design
863
-
864
- ### Adhere to ES6 and ESNext standard naming conventions for APIs.
865
-
866
- Standardize API conventions by using 'add' and 'delete' for element manipulation methods in all data structures.
867
-
868
- Opt for concise and clear method names, avoiding excessive length while ensuring explicit intent.
869
-
870
- ### Object-oriented programming(OOP)
871
-
872
- By strictly adhering to object-oriented design (BinaryTree -> BST -> AVLTree -> TreeMultimap), you can seamlessly
873
- inherit the existing data structures to implement the customized ones you need. Object-oriented design stands as the
874
- optimal approach to data structure design.
814
+ ## Software Engineering Design Standards
815
+ <table>
816
+ <tr>
817
+ <th>Principle</th>
818
+ <th>Description</th>
819
+ </tr>
820
+ <tr>
821
+ <td>Practicality</td>
822
+ <td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
823
+ </tr>
824
+ <tr>
825
+ <td>Extensibility</td>
826
+ <td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
827
+ </tr>
828
+ <tr>
829
+ <td>Modularization</td>
830
+ <td>Includes data structure modularization and independent NPM packages.</td>
831
+ </tr>
832
+ <tr>
833
+ <td>Efficiency</td>
834
+ <td>All methods provide time and space complexity, comparable to native JS performance.</td>
835
+ </tr>
836
+ <tr>
837
+ <td>Maintainability</td>
838
+ <td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
839
+ </tr>
840
+ <tr>
841
+ <td>Testability</td>
842
+ <td>Automated and customized unit testing, performance testing, and integration testing.</td>
843
+ </tr>
844
+ <tr>
845
+ <td>Portability</td>
846
+ <td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
847
+ </tr>
848
+ <tr>
849
+ <td>Reusability</td>
850
+ <td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
851
+ </tr>
852
+ <tr>
853
+ <td>Security</td>
854
+ <td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
855
+ </tr>
856
+ <tr>
857
+ <td>Scalability</td>
858
+ <td>Data structure software does not involve load issues.</td>
859
+ </tr>
860
+ </table>
@@ -42,8 +42,53 @@
42
42
  </head>
43
43
  <body>
44
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'>avl-tree</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>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.32</td><td>31.93</td><td>3.67e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>70.90</td><td>14.10</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>40.58</td><td>24.64</td><td>4.87e-4</td></tr><tr><td>10,000 get</td><td>27.31</td><td>36.62</td><td>2.00e-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'>binary-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>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>12.35</td><td>80.99</td><td>7.17e-5</td></tr><tr><td>1,000 add & delete randomly</td><td>15.98</td><td>62.58</td><td>7.98e-4</td></tr><tr><td>1,000 addMany</td><td>10.96</td><td>91.27</td><td>0.00</td></tr><tr><td>1,000 get</td><td>18.61</td><td>53.73</td><td>0.00</td></tr><tr><td>1,000 dfs</td><td>164.20</td><td>6.09</td><td>0.04</td></tr><tr><td>1,000 bfs</td><td>58.84</td><td>17.00</td><td>0.01</td></tr><tr><td>1,000 morris</td><td>256.66</td><td>3.90</td><td>7.70e-4</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'>bst</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>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.59</td><td>31.66</td><td>2.74e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>74.56</td><td>13.41</td><td>8.32e-4</td></tr><tr><td>10,000 addMany</td><td>29.16</td><td>34.30</td><td>0.00</td></tr><tr><td>10,000 get</td><td>29.24</td><td>34.21</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'>rb-tree</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>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>85.85</td><td>11.65</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>211.54</td><td>4.73</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>37.92</td><td>26.37</td><td>1.65e-4</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'>comparison</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>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC PQ 10,000 add</td><td>0.57</td><td>1748.73</td><td>4.96e-6</td></tr><tr><td>CJS PQ 10,000 add</td><td>0.57</td><td>1746.69</td><td>4.91e-6</td></tr><tr><td>MJS PQ 10,000 add</td><td>0.57</td><td>1749.68</td><td>4.43e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.47</td><td>288.14</td><td>6.38e-4</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.39</td><td>295.36</td><td>3.90e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.37</td><td>297.17</td><td>3.03e-5</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'>directed-graph</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>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9534.93</td><td>8.72e-7</td></tr><tr><td>1,000 addEdge</td><td>6.30</td><td>158.67</td><td>0.00</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>3.03e-7</td></tr><tr><td>1,000 getEdge</td><td>22.31</td><td>44.82</td><td>0.00</td></tr><tr><td>tarjan</td><td>210.90</td><td>4.74</td><td>0.01</td></tr><tr><td>tarjan all</td><td>214.72</td><td>4.66</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>172.52</td><td>5.80</td><td>0.00</td></tr></table></div>
62
+ </div><div class="json-to-html-collapse clearfix 0">
45
63
  <div class='collapsible level0' ><span class='json-to-html-label'>hash-map</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>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>217.67</td><td>4.59</td><td>0.02</td></tr><tr><td>1,000,000 CPT set</td><td>176.11</td><td>5.68</td><td>0.03</td></tr></table></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>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>275.88</td><td>3.62</td><td>0.12</td></tr><tr><td>1,000,000 Map set</td><td>211.66</td><td>4.72</td><td>0.01</td></tr><tr><td>1,000,000 Set add</td><td>177.72</td><td>5.63</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>317.60</td><td>3.15</td><td>0.02</td></tr><tr><td>1,000,000 Map set & get</td><td>274.99</td><td>3.64</td><td>0.03</td></tr><tr><td>1,000,000 Set add & has</td><td>172.23</td><td>5.81</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>929.40</td><td>1.08</td><td>0.07</td></tr><tr><td>1,000,000 Map ObjKey set & get</td><td>310.02</td><td>3.23</td><td>0.05</td></tr><tr><td>1,000,000 Set ObjKey add & has</td><td>283.28</td><td>3.53</td><td>0.04</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'>heap</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>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.80</td><td>172.35</td><td>8.78e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.92</td><td>2.79</td><td>0.00</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'>doubly-linked-list</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>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>221.57</td><td>4.51</td><td>0.03</td></tr><tr><td>1,000,000 unshift</td><td>229.02</td><td>4.37</td><td>0.07</td></tr><tr><td>1,000,000 unshift & shift</td><td>169.21</td><td>5.91</td><td>0.02</td></tr><tr><td>1,000,000 insertBefore</td><td>314.48</td><td>3.18</td><td>0.07</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'>singly-linked-list</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>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>212.98</td><td>4.70</td><td>0.01</td></tr><tr><td>10,000 insertBefore</td><td>250.68</td><td>3.99</td><td>0.01</td></tr></table></div>
74
+ </div><div class="json-to-html-collapse clearfix 0">
75
+ <div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
76
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>8.91</td><td>112.29</td><td>2.26e-4</td></tr></table></div>
77
+ </div><div class="json-to-html-collapse clearfix 0">
78
+ <div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
79
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>103.59</td><td>9.65</td><td>0.00</td></tr></table></div>
80
+ </div><div class="json-to-html-collapse clearfix 0">
81
+ <div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
82
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.55</td><td>68.72</td><td>6.91e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.40</td><td>42.73</td><td>5.94e-4</td></tr><tr><td>1,000,000 push & shift</td><td>24.41</td><td>40.97</td><td>1.45e-4</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.56</td><td>44.32</td><td>1.30e-4</td></tr></table></div>
83
+ </div><div class="json-to-html-collapse clearfix 0">
84
+ <div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
85
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>39.90</td><td>25.07</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>81.79</td><td>12.23</td><td>0.00</td></tr></table></div>
86
+ </div><div class="json-to-html-collapse clearfix 0">
87
+ <div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
88
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>37.60</td><td>26.60</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>47.01</td><td>21.27</td><td>0.00</td></tr></table></div>
89
+ </div><div class="json-to-html-collapse clearfix 0">
90
+ <div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
91
+ <div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>45.97</td><td>21.76</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>66.20</td><td>15.11</td><td>0.00</td></tr></table></div>
47
92
  </div>
48
93
 
49
94
  </div>