com.wallstop-studios.unity-helpers 2.0.0-rc81.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/.editorconfig +1 -1
  2. package/.gitattributes +1 -1
  3. package/.githooks/pre-commit +31 -5
  4. package/.githooks/pre-push +50 -0
  5. package/.github/dependabot.yml +24 -2
  6. package/.github/scripts/check-markdown-links.ps1 +77 -0
  7. package/.github/scripts/check_markdown_links.py +89 -0
  8. package/.github/scripts/check_markdown_url_encoding.py +74 -0
  9. package/.github/scripts/validate_markdown_links.py +194 -0
  10. package/.github/workflows/csharpier-autofix.yml +152 -0
  11. package/.github/workflows/format-on-demand.yml +305 -0
  12. package/.github/workflows/lint-doc-links.yml +8 -5
  13. package/.github/workflows/markdown-json.yml +6 -2
  14. package/.github/workflows/prettier-autofix.yml +195 -0
  15. package/.github/workflows/update-dotnet-tools.yml +80 -0
  16. package/.github/workflows/yaml-format-lint.yml +41 -0
  17. package/.lychee.toml +4 -4
  18. package/.markdownlint.jsonc +21 -0
  19. package/.pre-commit-config.yaml +11 -3
  20. package/.yamllint.yaml +31 -0
  21. package/AGENTS.md +5 -1
  22. package/CHANGELOG.md +11 -0
  23. package/CONTRIBUTING.md +49 -0
  24. package/CONTRIBUTING.md.meta +7 -0
  25. package/EDITOR_TOOLS_GUIDE.md +4 -0
  26. package/Editor/AnimationEventEditor.cs +337 -160
  27. package/Editor/Core/Helper/AnimationEventHelpers.cs +178 -152
  28. package/Editor/CustomEditors/PersistentDirectoryGUI.cs +20 -11
  29. package/Editor/CustomEditors/TexturePlatformOverrideEntryDrawer.cs +11 -2
  30. package/Editor/FitTextureSizeWindow.cs +43 -19
  31. package/Editor/PersistentDirectorySettings.cs +64 -12
  32. package/Editor/PrefabChecker.cs +72 -5
  33. package/Editor/Sprites/AnimationCopier.cs +132 -56
  34. package/Editor/Sprites/AnimationCreator.cs +63 -22
  35. package/Editor/Sprites/AnimationViewerWindow.cs +42 -6
  36. package/Editor/Sprites/TexturePlatformNameHelper.cs +50 -39
  37. package/Editor/Sprites/TextureResizerWizard.cs +23 -1
  38. package/Editor/Sprites/TextureSettingsApplierWindow.cs +148 -85
  39. package/Editor/Tools/ImageBlurTool.cs +81 -10
  40. package/Editor/Utils/EditorUi.cs +1 -1
  41. package/Editor/Utils/ScriptableObjectSingletonCreator.cs +1 -1
  42. package/GETTING_STARTED.md +40 -56
  43. package/RANDOM_PERFORMANCE.md +12 -12
  44. package/README.md +395 -2407
  45. package/RELATIONAL_COMPONENTS.md +92 -83
  46. package/Runtime/AssemblyInfo.cs +2 -0
  47. package/Runtime/Core/Attributes/NotNullAttribute.cs +1 -3
  48. package/Runtime/Core/Attributes/RelationalComponentAssigner.cs +50 -5
  49. package/Runtime/Core/DataStructure/CyclicBuffer.cs +0 -1
  50. package/Runtime/Core/Extension/RandomExtensions.cs +68 -0
  51. package/Runtime/Core/Extension/WallstopStudiosLogger.cs +16 -0
  52. package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +4 -1
  53. package/Runtime/Core/Helper/ReflectionHelpers.cs +21 -10
  54. package/Runtime/Core/Helper/SpriteHelpers.cs +3 -1
  55. package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +45 -1
  56. package/Runtime/Core/Serialization/JsonConverters/GameObjectConverter.cs +13 -5
  57. package/Runtime/Core/Serialization/JsonConverters/ResolutionConverter.cs +1 -1
  58. package/Runtime/Core/Serialization/JsonConverters/TypeConverter.cs +1 -1
  59. package/Runtime/Core/Serialization/Serializer.cs +101 -0
  60. package/Runtime/Integrations/VContainer/AssemblyInfo.cs +9 -0
  61. package/Runtime/Integrations/VContainer/AssemblyInfo.cs.meta +3 -0
  62. package/Runtime/Integrations/VContainer/ObjectResolverRelationalExtensions.cs +96 -0
  63. package/Runtime/Integrations/VContainer/RelationalComponentEntryPoint.cs +90 -10
  64. package/Runtime/Integrations/VContainer/RelationalComponentsBuilderExtensions.cs +13 -1
  65. package/Runtime/Integrations/VContainer/RelationalObjectPools.cs +114 -0
  66. package/Runtime/Integrations/VContainer/RelationalObjectPools.cs.meta +11 -0
  67. package/Runtime/Integrations/VContainer/RelationalSceneAssignmentOptions.cs +16 -4
  68. package/Runtime/Integrations/VContainer/RelationalSceneLoadListener.cs +241 -0
  69. package/Runtime/Integrations/VContainer/RelationalSceneLoadListener.cs.meta +11 -0
  70. package/Runtime/Integrations/Zenject/AssemblyInfo.cs +9 -0
  71. package/Runtime/Integrations/Zenject/AssemblyInfo.cs.meta +3 -0
  72. package/Runtime/Integrations/Zenject/DiContainerRelationalExtensions.cs +69 -2
  73. package/Runtime/Integrations/Zenject/RelationalComponentSceneInitializer.cs +89 -12
  74. package/Runtime/Integrations/Zenject/RelationalComponentsInstaller.cs +23 -1
  75. package/Runtime/Integrations/Zenject/RelationalMemoryPools.cs +44 -0
  76. package/Runtime/Integrations/Zenject/RelationalMemoryPools.cs.meta +11 -0
  77. package/Runtime/Integrations/Zenject/RelationalSceneAssignmentOptions.cs +16 -10
  78. package/Runtime/Integrations/Zenject/RelationalSceneLoadListener.cs +243 -0
  79. package/Runtime/Integrations/Zenject/RelationalSceneLoadListener.cs.meta +11 -0
  80. package/Runtime/Tags/AttributeMetadataCache.cs +1 -4
  81. package/Runtime/Utils/Buffers.cs +4 -4
  82. package/Runtime/Utils/ScriptableObjectSingleton.cs +0 -1
  83. package/Runtime/Utils/SetTextureImportData.cs +3 -1
  84. package/Runtime/Utils/TextureScale.cs +10 -2
  85. package/Runtime/Visuals/UGUI/EnhancedImage.cs +6 -0
  86. package/Runtime/Visuals/UIToolkit/LayeredImage.cs +4 -1
  87. package/SERIALIZATION.md +15 -0
  88. package/SPATIAL_TREE_2D_PERFORMANCE.md +85 -82
  89. package/SPATIAL_TREE_3D_PERFORMANCE.md +94 -91
  90. package/Samples~/DI - VContainer/README.md +232 -51
  91. package/Samples~/DI - VContainer/Scripts/GameLifetimeScope.cs +22 -4
  92. package/Samples~/DI - VContainer/Scripts/RelationalConsumer.cs +5 -2
  93. package/Samples~/DI - VContainer/Scripts/Spawner.cs +113 -4
  94. package/Samples~/DI - Zenject/README.md +217 -53
  95. package/Samples~/DI - Zenject/Scripts/RelationalConsumer.cs +3 -0
  96. package/Samples~/DI - Zenject/Scripts/RelationalConsumerPool.cs +37 -0
  97. package/Samples~/DI - Zenject/Scripts/RelationalConsumerPool.cs.meta +12 -0
  98. package/Samples~/DI - Zenject/Scripts/SpawnerZenject.cs +74 -3
  99. package/Samples~/Random - PRNG/README.md +2 -1
  100. package/Samples~/Relational Components - Basic/README.md +3 -1
  101. package/Samples~/Serialization - JSON/README.md +2 -1
  102. package/Samples~/Spatial Structures - 2D and 3D/README.md +2 -1
  103. package/Samples~/UGUI - EnhancedImage/README.md +2 -1
  104. package/Samples~/UI Toolkit - MultiFile Selector (Editor)/README.md +2 -1
  105. package/THIRD_PARTY_NOTICES.md +1 -1
  106. package/Tests/Editor/Attributes/AnimationEventHelpersTests.cs +16 -0
  107. package/Tests/Editor/Core/Attributes/RelationalComponentAssignerTests.cs +3 -3
  108. package/Tests/Editor/Integrations/VContainer/VContainerRelationalEntryPointTests.cs +6 -2
  109. package/Tests/Editor/Integrations/VContainer/VContainerRelationalHelpersTests.cs +170 -0
  110. package/Tests/Editor/Integrations/VContainer/VContainerRelationalHelpersTests.cs.meta +11 -0
  111. package/Tests/Editor/Integrations/VContainer/WallstopStudios.UnityHelpers.Tests.Editor.VContainer.asmdef +2 -1
  112. package/Tests/Editor/Integrations/Zenject/WallstopStudios.UnityHelpers.Tests.Editor.Zenject.asmdef +3 -2
  113. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalHelpersTests.cs +131 -0
  114. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalHelpersTests.cs.meta +11 -0
  115. package/Tests/Editor/Integrations/Zenject/ZenjectRelationalInitializerTests.cs +6 -2
  116. package/Tests/Editor/PersistentDirectorySettingsTests.cs +59 -0
  117. package/Tests/Editor/PersistentDirectorySettingsTests.cs.meta +11 -0
  118. package/Tests/Editor/PrefabCheckerReportTests.cs +32 -0
  119. package/Tests/Editor/PrefabCheckerReportTests.cs.meta +11 -0
  120. package/Tests/Editor/Sprites/AnimationCopierFilterTests.cs +64 -0
  121. package/Tests/Editor/Sprites/AnimationCopierFilterTests.cs.meta +11 -0
  122. package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs +1 -1
  123. package/Tests/Editor/Sprites/AnimationViewerWindowTests.cs +38 -0
  124. package/Tests/Editor/Sprites/AnimationViewerWindowTests.cs.meta +11 -0
  125. package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs +1 -1
  126. package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs +12 -12
  127. package/Tests/Editor/Sprites/SpriteCropperTests.cs +9 -9
  128. package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs +3 -3
  129. package/Tests/Editor/Sprites/TexturePlatformNameHelperTests.cs +18 -0
  130. package/Tests/Editor/Sprites/TextureResizerWizardTests.cs +5 -5
  131. package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs +3 -3
  132. package/Tests/Editor/Sprites/TextureSettingsApplierWizardAdditionalTests.cs +4 -4
  133. package/Tests/Editor/Sprites/TextureSettingsApplierWizardTests.cs +4 -4
  134. package/Tests/Editor/Tools/ImageBlurToolTests.cs +22 -110
  135. package/Tests/Editor/Utils/CommonTestBase.cs +43 -1
  136. package/Tests/Editor/Utils/ScriptableObjectSingletonCreatorTests.cs +5 -5
  137. package/Tests/Editor/Windows/FitTextureSizeWindowTests.cs +66 -74
  138. package/Tests/Runtime/Attributes/RelationalComponentInitializerTests.cs +4 -15
  139. package/Tests/Runtime/DataStructures/SpatialTree3DBoundsConsistencyTests.cs +29 -29
  140. package/Tests/Runtime/Integrations/VContainer/RelationalComponentsVContainerTests.cs +259 -218
  141. package/Tests/Runtime/Integrations/VContainer/RelationalObjectPoolsVContainerTests.cs +86 -0
  142. package/Tests/Runtime/Integrations/VContainer/RelationalObjectPoolsVContainerTests.cs.meta +11 -0
  143. package/Tests/Runtime/Integrations/Zenject/RelationalComponentsZenjectTests.cs +255 -227
  144. package/Tests/Runtime/Performance/SpatialTree2DPerformanceTests.cs +5 -0
  145. package/Tests/Runtime/Performance/SpatialTree3DPerformanceTests.cs +3 -0
  146. package/Tests/Runtime/Serialization/JsonConverterAdditionalTests.cs +30 -0
  147. package/Tests/Runtime/Serialization/JsonConverterAdditionalTests.cs.meta +11 -0
  148. package/Tests/Runtime/Serialization/JsonConverterTests.cs +8 -12
  149. package/Tests/Runtime/Serialization/JsonSerializationTest.cs +16 -5
  150. package/Tests/Runtime/Serialization/SerializerAdditionalTests.cs +12 -0
  151. package/Tests/Runtime/Serialization/SerializerFileIoTests.cs +105 -0
  152. package/Tests/Runtime/Serialization/SerializerFileIoTests.cs.meta +11 -0
  153. package/Tests/Runtime/Serialization/UnityEngineObjectJsonTests.cs +247 -0
  154. package/Tests/Runtime/Serialization/UnityEngineObjectJsonTests.cs.meta +11 -0
  155. package/Tests/Runtime/TestUtils/CommonTestBase.cs +88 -0
  156. package/Tests/Runtime/Utils/CoroutineHandlerTests.cs +1 -1
  157. package/Tests/Runtime/Utils/LZMAComprehensiveTests.cs +1 -1
  158. package/Tests/Runtime/Utils/LZMATests.cs +1 -1
  159. package/Tests/Runtime/Utils/MatchColliderToSpriteTests.cs +1 -1
  160. package/Tests/Runtime/Visuals/EnhancedImageTests.cs +25 -56
  161. package/Tests/Runtime/Visuals/VisualsTestHelpers.cs +1 -8
  162. package/package-lock.json.meta +7 -0
  163. package/package.json +8 -4
  164. package/scripts/check-eol.ps1 +4 -5
  165. package/scripts/lint-tests.ps1 +156 -0
  166. package/scripts/lint-tests.ps1.meta +7 -0
  167. package/scripts/normalize-eol.ps1 +6 -9
  168. package/.github/workflows/csharpier.yml +0 -135
@@ -21,77 +21,80 @@ This document contains performance benchmarks for the 2D spatial tree implementa
21
21
  ## Performance Benchmarks
22
22
 
23
23
  <!-- SPATIAL_TREE_BENCHMARKS_START -->
24
+
25
+ ### Datasets
26
+
24
27
  <!-- tabs:start -->
25
28
 
26
- ### 1,000,000 entries
29
+ #### **1,000,000 entries**
27
30
 
28
- #### Construction
31
+ ##### Construction
29
32
 
30
33
  | Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
31
34
  | ----------------- | ------------------- | --------------------- | ---------- | ---------- |
32
- | 1,000,000 entries | 4 (0.244s) | 6 (0.153s) | 4 (0.222s) | 2 (0.386s) |
35
+ | 1,000,000 entries | 4 (0.242s) | 6 (0.153s) | 4 (0.221s) | 2 (0.383s) |
33
36
 
34
- #### Elements In Range
37
+ ##### Elements In Range
35
38
 
36
39
  | Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
37
40
  | --------------------------- | ------------------- | --------------------- | ---------- | ------- |
38
41
  | Full (~span/2) (r=499.5) | 59 | 58 | 56 | 7 |
39
- | Half (~span/4) (r=249.8) | 236 | 236 | 217 | 28 |
40
- | Quarter (~span/8) (r=124.9) | 946 | 945 | 816 | 119 |
41
- | Tiny (~span/1000) (r=1) | 101,504 | 105,285 | 142,984 | 106,816 |
42
+ | Half (~span/4) (r=249.8) | 237 | 238 | 208 | 28 |
43
+ | Quarter (~span/8) (r=124.9) | 946 | 946 | 815 | 119 |
44
+ | Tiny (~span/1000) (r=1) | 103,296 | 105,692 | 143,494 | 97,759 |
42
45
 
43
- #### Get Elements In Bounds
46
+ ##### Get Elements In Bounds
44
47
 
45
48
  | Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
46
49
  | -------------------------- | ------------------- | --------------------- | ---------- | ------- |
47
- | Full (size=999.0x999.0) | 380 | 382 | 344 | 17 |
48
- | Half (size=499.5x499.5) | 1,851 | 1,843 | 1,236 | 75 |
49
- | Quarter (size=249.8x249.8) | 7,483 | 7,248 | 3,887 | 377 |
50
- | Unit (size=1) | 147,825 | 152,474 | 196,544 | 110,185 |
50
+ | Full (size=999.0x999.0) | 317 | 353 | 336 | 17 |
51
+ | Half (size=499.5x499.5) | 1,857 | 1,849 | 1,219 | 72 |
52
+ | Quarter (size=249.8x249.8) | 7,448 | 7,335 | 3,828 | 377 |
53
+ | Unit (size=1) | 148,705 | 152,996 | 197,558 | 112,830 |
51
54
 
52
- #### Approximate Nearest Neighbors
55
+ ##### Approximate Nearest Neighbors
53
56
 
54
57
  | Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
55
58
  | ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
56
- | 500 neighbors | 8,454 | 16,901 | 12,715 | 69,581 |
57
- | 100 neighbors | 77,855 | 76,370 | 78,317 | 175,585 |
58
- | 10 neighbors | 377,857 | 352,657 | 225,271 | 281,743 |
59
- | 1 neighbor | 516,596 | 504,358 | 276,636 | 296,533 |
59
+ | 500 neighbors | 8,468 | 16,899 | 12,711 | 70,133 |
60
+ | 100 neighbors | 73,055 | 75,462 | 79,088 | 177,523 |
61
+ | 10 neighbors | 402,113 | 359,757 | 236,395 | 283,695 |
62
+ | 1 neighbor | 517,286 | 507,752 | 293,106 | 297,633 |
60
63
 
61
- ### 100,000 entries
64
+ #### **100,000 entries**
62
65
 
63
- #### Construction
66
+ ##### Construction
64
67
 
65
68
  | Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
66
69
  | --------------- | ------------------- | --------------------- | ----------- | ----------- |
67
- | 100,000 entries | 50 (0.020s) | 83 (0.012s) | 50 (0.020s) | 50 (0.020s) |
70
+ | 100,000 entries | 51 (0.020s) | 84 (0.012s) | 50 (0.020s) | 49 (0.020s) |
68
71
 
69
- #### Elements In Range
72
+ ##### Elements In Range
70
73
 
71
74
  | Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
72
75
  | --------------------------- | ------------------- | --------------------- | ---------- | ------- |
73
76
  | Full (~span/2) (r=199.5) | 601 | 601 | 601 | 74 |
74
- | Half (~span/4) (r=99.75) | 1,353 | 1,358 | 1,248 | 186 |
75
- | Quarter (~span/8) (r=49.88) | 4,667 | 5,176 | 4,299 | 724 |
76
- | Tiny (~span/1000) (r=1) | 127,432 | 127,776 | 178,260 | 145,496 |
77
+ | Half (~span/4) (r=99.75) | 1,356 | 1,360 | 1,247 | 185 |
78
+ | Quarter (~span/8) (r=49.88) | 4,672 | 5,180 | 4,307 | 722 |
79
+ | Tiny (~span/1000) (r=1) | 127,754 | 128,131 | 179,416 | 145,140 |
77
80
 
78
- #### Get Elements In Bounds
81
+ ##### Get Elements In Bounds
79
82
 
80
83
  | Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
81
84
  | -------------------------- | ------------------- | --------------------- | ---------- | ------- |
82
- | Full (size=399.0x249.0) | 4,571 | 4,588 | 4,675 | 232 |
83
- | Half (size=199.5x124.5) | 9,686 | 12,037 | 8,043 | 973 |
84
- | Quarter (size=99.75x62.25) | 25,538 | 33,097 | 19,916 | 3,832 |
85
- | Unit (size=1) | 182,094 | 183,264 | 244,353 | 154,606 |
85
+ | Full (size=399.0x249.0) | 4,645 | 4,645 | 4,706 | 234 |
86
+ | Half (size=199.5x124.5) | 9,623 | 12,109 | 7,961 | 965 |
87
+ | Quarter (size=99.75x62.25) | 25,400 | 34,298 | 19,544 | 3,784 |
88
+ | Unit (size=1) | 184,037 | 185,160 | 245,914 | 155,355 |
86
89
 
87
- #### Approximate Nearest Neighbors
90
+ ##### Approximate Nearest Neighbors
88
91
 
89
92
  | Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
90
93
  | ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
91
- | 500 neighbors | 9,965 | 9,922 | 11,666 | 69,077 |
92
- | 100 neighbors | 49,164 | 92,888 | 55,324 | 216,799 |
93
- | 10 neighbors | 474,916 | 390,202 | 265,444 | 350,326 |
94
- | 1 neighbor | 474,933 | 543,573 | 323,662 | 372,714 |
94
+ | 500 neighbors | 9,952 | 9,920 | 11,686 | 70,056 |
95
+ | 100 neighbors | 49,710 | 92,455 | 55,495 | 229,190 |
96
+ | 10 neighbors | 471,032 | 388,654 | 281,101 | 333,022 |
97
+ | 1 neighbor | 480,991 | 549,542 | 338,876 | 373,297 |
95
98
 
96
99
  #### **10,000 entries**
97
100
 
@@ -99,103 +102,103 @@ This document contains performance benchmarks for the 2D spatial tree implementa
99
102
 
100
103
  | Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
101
104
  | -------------- | ------------------- | --------------------- | ------------ | ------------ |
102
- | 10,000 entries | 537 (0.002s) | 801 (0.001s) | 542 (0.002s) | 504 (0.002s) |
105
+ | 10,000 entries | 551 (0.002s) | 800 (0.001s) | 546 (0.002s) | 525 (0.002s) |
103
106
 
104
107
  ##### Elements In Range
105
108
 
106
109
  | Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
107
110
  | --------------------------- | ------------------- | --------------------- | ---------- | ------- |
108
- | Full (~span/2) (r=49.50) | 5,935 | 5,938 | 5,944 | 735 |
109
- | Half (~span/4) (r=24.75) | 22,275 | 22,241 | 13,866 | 2,926 |
110
- | Quarter (~span/8) (r=12.38) | 44,200 | 51,396 | 38,060 | 12,233 |
111
- | Tiny (~span/1000) (r=1) | 166,755 | 161,974 | 232,843 | 168,516 |
111
+ | Full (~span/2) (r=49.50) | 5,942 | 5,945 | 5,941 | 733 |
112
+ | Half (~span/4) (r=24.75) | 22,304 | 22,191 | 13,873 | 2,920 |
113
+ | Quarter (~span/8) (r=12.38) | 44,208 | 51,431 | 38,116 | 12,194 |
114
+ | Tiny (~span/1000) (r=1) | 167,413 | 161,761 | 234,097 | 167,770 |
112
115
 
113
116
  ##### Get Elements In Bounds
114
117
 
115
118
  | Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
116
119
  | -------------------------- | ------------------- | --------------------- | ---------- | ------- |
117
- | Full (size=99.00x99.00) | 46,195 | 46,083 | 46,681 | 2,426 |
118
- | Half (size=49.50x49.50) | 167,388 | 148,478 | 36,590 | 9,339 |
119
- | Quarter (size=24.75x24.75) | 75,940 | 104,014 | 75,785 | 35,720 |
120
- | Unit (size=1) | 239,397 | 231,168 | 318,259 | 179,268 |
120
+ | Full (size=99.00x99.00) | 47,031 | 45,293 | 46,157 | 2,404 |
121
+ | Half (size=49.50x49.50) | 167,032 | 165,451 | 36,111 | 9,307 |
122
+ | Quarter (size=24.75x24.75) | 75,684 | 103,502 | 75,649 | 35,561 |
123
+ | Unit (size=1) | 240,255 | 227,585 | 320,229 | 181,472 |
121
124
 
122
125
  ##### Approximate Nearest Neighbors
123
126
 
124
127
  | Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
125
128
  | ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
126
- | 500 neighbors | 13,166 | 13,003 | 14,458 | 64,265 |
127
- | 100 neighbors | 62,425 | 56,807 | 96,006 | 221,880 |
128
- | 10 neighbors | 395,764 | 419,775 | 284,603 | 415,788 |
129
- | 1 neighbor | 597,510 | 602,338 | 369,442 | 459,139 |
129
+ | 500 neighbors | 13,185 | 13,070 | 14,419 | 65,450 |
130
+ | 100 neighbors | 62,217 | 57,218 | 96,702 | 230,930 |
131
+ | 10 neighbors | 390,709 | 424,507 | 299,714 | 399,779 |
132
+ | 1 neighbor | 641,458 | 605,931 | 398,228 | 460,806 |
130
133
 
131
- ### 1,000 entries
134
+ #### **1,000 entries**
132
135
 
133
- #### Construction
136
+ ##### Construction
134
137
 
135
138
  | Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
136
139
  | ------------- | ------------------- | --------------------- | -------------- | -------------- |
137
- | 1,000 entries | 5,327 (0.000s) | 7,739 (0.000s) | 4,952 (0.000s) | 4,764 (0.000s) |
140
+ | 1,000 entries | 5,293 (0.000s) | 7,651 (0.000s) | 4,833 (0.000s) | 4,714 (0.000s) |
138
141
 
139
- #### Elements In Range
142
+ ##### Elements In Range
140
143
 
141
144
  | Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
142
145
  | -------------------------- | ------------------- | --------------------- | ---------- | ------- |
143
- | Full (~span/2) (r=24.50) | 58,072 | 57,956 | 57,377 | 7,419 |
144
- | Half (~span/4) (r=12.25) | 60,307 | 76,412 | 57,036 | 14,715 |
145
- | Quarter (~span/8) (r=6.13) | 95,578 | 108,397 | 95,395 | 38,031 |
146
- | Tiny (~span/1000) (r=1) | 238,625 | 236,418 | 334,236 | 251,174 |
146
+ | Full (~span/2) (r=24.50) | 58,149 | 57,896 | 57,459 | 7,394 |
147
+ | Half (~span/4) (r=12.25) | 60,405 | 76,413 | 57,031 | 14,679 |
148
+ | Quarter (~span/8) (r=6.13) | 95,613 | 108,483 | 95,695 | 37,751 |
149
+ | Tiny (~span/1000) (r=1) | 239,168 | 237,044 | 338,176 | 244,401 |
147
150
 
148
- #### Get Elements In Bounds
151
+ ##### Get Elements In Bounds
149
152
 
150
153
  | Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
151
154
  | ------------------------- | ------------------- | --------------------- | ---------- | ------- |
152
- | Full (size=49.00x19.00) | 496,607 | 498,142 | 539,878 | 24,229 |
153
- | Half (size=24.50x9.5) | 165,447 | 287,325 | 127,121 | 75,159 |
154
- | Quarter (size=12.25x4.75) | 255,238 | 273,498 | 194,690 | 176,327 |
155
- | Unit (size=1) | 338,275 | 335,033 | 453,237 | 279,167 |
155
+ | Full (size=49.00x19.00) | 499,646 | 499,135 | 540,101 | 23,360 |
156
+ | Half (size=24.50x9.5) | 166,957 | 292,171 | 126,505 | 74,879 |
157
+ | Quarter (size=12.25x4.75) | 271,449 | 289,235 | 194,116 | 175,956 |
158
+ | Unit (size=1) | 341,843 | 338,190 | 460,298 | 281,087 |
156
159
 
157
- #### Approximate Nearest Neighbors
160
+ ##### Approximate Nearest Neighbors
158
161
 
159
162
  | Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
160
163
  | ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
161
- | 500 neighbors | 46,525 | 47,120 | 38,307 | 69,953 |
162
- | 100 neighbors | 80,804 | 78,180 | 92,282 | 268,937 |
163
- | 10 neighbors | 520,835 | 601,494 | 416,276 | 506,668 |
164
- | 1 neighbor | 725,705 | 581,979 | 388,981 | 591,498 |
164
+ | 500 neighbors | 46,443 | 46,967 | 40,228 | 70,534 |
165
+ | 100 neighbors | 79,342 | 78,217 | 92,396 | 272,589 |
166
+ | 10 neighbors | 497,653 | 573,470 | 405,080 | 532,922 |
167
+ | 1 neighbor | 728,027 | 586,007 | 434,731 | 543,105 |
165
168
 
166
- ### 100 entries
169
+ #### **100 entries**
167
170
 
168
- #### Construction
171
+ ##### Construction
169
172
 
170
173
  | Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
171
174
  | ------------ | ------------------- | --------------------- | --------------- | --------------- |
172
- | 100 entries | 42,553 (0.000s) | 21,929 (0.000s) | 29,325 (0.000s) | 21,786 (0.000s) |
175
+ | 100 entries | 41,666 (0.000s) | 35,714 (0.000s) | 27,700 (0.000s) | 24,096 (0.000s) |
173
176
 
174
- #### Elements In Range
177
+ ##### Elements In Range
175
178
 
176
179
  | Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
177
180
  | -------------------------- | ------------------- | --------------------- | ---------- | ------- |
178
- | Full (~span/2) (r=4.5) | 504,629 | 463,895 | 509,215 | 72,746 |
179
- | Half (~span/4) (r=2.25) | 425,242 | 430,575 | 256,046 | 236,805 |
180
- | Quarter (~span/8) (r=1.13) | 425,958 | 430,848 | 593,604 | 338,080 |
181
- | Tiny (~span/1000) (r=1) | 424,528 | 430,448 | 591,691 | 338,365 |
181
+ | Full (~span/2) (r=4.5) | 496,195 | 494,030 | 509,285 | 72,691 |
182
+ | Half (~span/4) (r=2.25) | 421,999 | 423,114 | 257,119 | 236,378 |
183
+ | Quarter (~span/8) (r=1.13) | 421,665 | 394,791 | 599,129 | 338,518 |
184
+ | Tiny (~span/1000) (r=1) | 421,578 | 398,874 | 599,521 | 338,820 |
182
185
 
183
- #### Get Elements In Bounds
186
+ ##### Get Elements In Bounds
184
187
 
185
188
  | Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
186
189
  | ------------------------ | ------------------- | --------------------- | ---------- | ------- |
187
- | Full (size=9x9) | 2,269,583 | 2,434,901 | 2,501,705 | 224,429 |
188
- | Half (size=4.5x4.5) | 566,944 | 555,712 | 360,504 | 369,394 |
189
- | Quarter (size=2.25x2.25) | 592,102 | 565,569 | 753,693 | 390,919 |
190
- | Unit (size=1) | 592,678 | 595,395 | 784,153 | 386,053 |
190
+ | Full (size=9x9) | 2,405,297 | 2,015,574 | 2,414,353 | 224,027 |
191
+ | Half (size=4.5x4.5) | 548,616 | 559,875 | 365,374 | 368,394 |
192
+ | Quarter (size=2.25x2.25) | 541,107 | 599,286 | 786,141 | 375,705 |
193
+ | Unit (size=1) | 563,974 | 599,575 | 786,313 | 394,632 |
191
194
 
192
- #### Approximate Nearest Neighbors
195
+ ##### Approximate Nearest Neighbors
193
196
 
194
197
  | Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
195
198
  | ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
196
- | 100 neighbors (max) | 165,219 | 164,632 | 200,629 | 306,317 |
197
- | 10 neighbors | 610,304 | 516,470 | 619,678 | 760,800 |
198
- | 1 neighbor | 499,393 | 737,678 | 642,498 | 823,829 |
199
+ | 100 neighbors (max) | 156,774 | 165,187 | 202,641 | 323,451 |
200
+ | 10 neighbors | 618,887 | 495,826 | 609,986 | 720,591 |
201
+ | 1 neighbor | 619,752 | 773,756 | 675,868 | 864,801 |
199
202
 
200
203
  <!-- tabs:end -->
201
204
  <!-- SPATIAL_TREE_BENCHMARKS_END -->
@@ -22,181 +22,184 @@ This document contains performance benchmarks for the 3D spatial tree implementa
22
22
  ## Performance Benchmarks
23
23
 
24
24
  <!-- SPATIAL_TREE_3D_BENCHMARKS_START -->
25
+
26
+ ### Datasets
27
+
25
28
  <!-- tabs:start -->
26
29
 
27
- ### 1,000,000 entries
30
+ #### **1,000,000 entries**
28
31
 
29
- #### Construction
32
+ ##### Construction
30
33
 
31
34
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
32
35
  | ----------------- | ------------------- | --------------------- | ---------- | ---------- |
33
- | 1,000,000 entries | 2 (0.405s) | 3 (0.321s) | 4 (0.238s) | 2 (0.369s) |
36
+ | 1,000,000 entries | 2 (0.462s) | 2 (0.334s) | 4 (0.238s) | 2 (0.415s) |
34
37
 
35
- #### Elements In Range
38
+ ##### Elements In Range
36
39
 
37
40
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
38
41
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
39
- | Full (~span/2) (r=49.50) | 17 | 20 | 33 | 15 |
40
- | Half (~span/4) (r=24.75) | 131 | 160 | 242 | 153 |
41
- | Quarter (~span/8) (r=12.38) | 937 | 1,229 | 1,653 | 1,520 |
42
- | Tiny (~span/1000) (r=1) | 23,510 | 23,699 | 97,513 | 76,591 |
42
+ | Full (~span/2) (r=49.50) | 17 | 20 | 32 | 15 |
43
+ | Half (~span/4) (r=24.75) | 127 | 157 | 244 | 159 |
44
+ | Quarter (~span/8) (r=12.38) | 934 | 1,205 | 1,662 | 1,521 |
45
+ | Tiny (~span/1000) (r=1) | 23,474 | 23,256 | 136,339 | 76,528 |
43
46
 
44
- #### Get Elements In Bounds
47
+ ##### Get Elements In Bounds
45
48
 
46
49
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
47
50
  | -------------------------------- | ------------------- | --------------------- | --------- | ------- |
48
- | Full (size≈99.00x99.00x99.00) | 33 | 39 | 225 | 23 |
49
- | Half (size≈49.50x49.50x49.50) | 39 | 46 | 1,298 | 276 |
50
- | Quarter (size≈24.75x24.75x24.75) | 40 | 47 | 4,050 | 2,531 |
51
- | Unit (size=1) | 40 | 48 | 182,963 | 77,858 |
51
+ | Full (size≈99.00x99.00x99.00) | 32 | 38 | 183 | 20 |
52
+ | Half (size≈49.50x49.50x49.50) | 38 | 44 | 1,296 | 269 |
53
+ | Quarter (size≈24.75x24.75x24.75) | 39 | 45 | 4,051 | 2,514 |
54
+ | Unit (size=1) | 40 | 47 | 176,851 | 71,895 |
52
55
 
53
- #### Approximate Nearest Neighbors
56
+ ##### Approximate Nearest Neighbors
54
57
 
55
58
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
56
59
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
57
- | 500 neighbors | 5,895 | 10,188 | 2,309 | 304 |
58
- | 100 neighbors | 65,303 | 74,548 | 10,926 | 3,387 |
59
- | 10 neighbors | 408,553 | 419,729 | 16,046 | 7,914 |
60
- | 1 neighbor | 552,534 | 484,025 | 19,874 | 8,610 |
60
+ | 500 neighbors | 5,917 | 10,145 | 2,299 | 305 |
61
+ | 100 neighbors | 65,265 | 72,176 | 10,753 | 3,343 |
62
+ | 10 neighbors | 406,365 | 415,717 | 15,601 | 7,643 |
63
+ | 1 neighbor | 550,998 | 479,367 | 19,376 | 8,299 |
61
64
 
62
- ### 100,000 entries
65
+ #### **100,000 entries**
63
66
 
64
- #### Construction
67
+ ##### Construction
65
68
 
66
69
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
67
70
  | --------------- | ------------------- | --------------------- | ----------- | ----------- |
68
- | 100,000 entries | 34 (0.029s) | 47 (0.021s) | 65 (0.015s) | 44 (0.022s) |
71
+ | 100,000 entries | 35 (0.029s) | 48 (0.021s) | 66 (0.015s) | 41 (0.024s) |
69
72
 
70
- #### Elements In Range
73
+ ##### Elements In Range
71
74
 
72
75
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
73
76
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
74
- | Full (~span/2) (r=49.50) | 335 | 485 | 776 | 213 |
75
- | Half (~span/4) (r=24.75) | 1,021 | 1,434 | 2,047 | 857 |
76
- | Quarter (~span/8) (r=12.38) | 2,568 | 3,994 | 6,043 | 3,441 |
77
- | Tiny (~span/1000) (r=1) | 26,786 | 29,821 | 177,795 | 101,341 |
77
+ | Full (~span/2) (r=49.50) | 328 | 476 | 767 | 198 |
78
+ | Half (~span/4) (r=24.75) | 1,000 | 1,424 | 2,024 | 856 |
79
+ | Quarter (~span/8) (r=12.38) | 2,519 | 3,929 | 5,943 | 3,444 |
80
+ | Tiny (~span/1000) (r=1) | 26,289 | 29,307 | 174,966 | 101,213 |
78
81
 
79
- #### Get Elements In Bounds
82
+ ##### Get Elements In Bounds
80
83
 
81
84
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
82
85
  | ------------------------------- | ------------------- | --------------------- | --------- | ------- |
83
- | Full (size≈99.00x99.00x9) | 636 | 778 | 2,716 | 354 |
84
- | Half (size≈49.50x49.50x4.5) | 740 | 909 | 9,663 | 3,518 |
85
- | Quarter (size≈24.75x24.75x2.25) | 752 | 934 | 46,764 | 24,351 |
86
- | Unit (size=1) | 755 | 942 | 245,087 | 103,425 |
86
+ | Full (size≈99.00x99.00x9) | 636 | 764 | 2,638 | 349 |
87
+ | Half (size≈49.50x49.50x4.5) | 741 | 903 | 9,365 | 3,477 |
88
+ | Quarter (size≈24.75x24.75x2.25) | 755 | 933 | 48,138 | 24,155 |
89
+ | Unit (size=1) | 759 | 940 | 246,230 | 101,413 |
87
90
 
88
- #### Approximate Nearest Neighbors
91
+ ##### Approximate Nearest Neighbors
89
92
 
90
93
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
91
94
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
92
- | 500 neighbors | 6,738 | 12,074 | 1,626 | 271 |
93
- | 100 neighbors | 38,663 | 44,099 | 9,271 | 2,266 |
94
- | 10 neighbors | 424,563 | 310,952 | 19,261 | 7,732 |
95
- | 1 neighbor | 460,856 | 332,893 | 30,086 | 12,328 |
95
+ | 500 neighbors | 6,677 | 12,019 | 1,631 | 271 |
96
+ | 100 neighbors | 38,824 | 44,184 | 9,263 | 2,236 |
97
+ | 10 neighbors | 449,797 | 330,300 | 19,167 | 7,478 |
98
+ | 1 neighbor | 426,499 | 310,941 | 30,037 | 11,896 |
96
99
 
97
- ### 10,000 entries
100
+ #### **10,000 entries**
98
101
 
99
- #### Construction
102
+ ##### Construction
100
103
 
101
104
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
102
105
  | -------------- | ------------------- | --------------------- | ------------ | ------------ |
103
- | 10,000 entries | 450 (0.002s) | 146 (0.007s) | 601 (0.002s) | 435 (0.002s) |
106
+ | 10,000 entries | 466 (0.002s) | 473 (0.002s) | 615 (0.002s) | 450 (0.002s) |
104
107
 
105
- #### Elements In Range
108
+ ##### Elements In Range
106
109
 
107
110
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
108
111
  | --------------------------- | ------------------- | --------------------- | --------- | ------- |
109
- | Full (~span/2) (r=49.50) | 4,778 | 4,607 | 9,136 | 1,904 |
110
- | Half (~span/4) (r=24.75) | 5,951 | 6,495 | 8,914 | 3,800 |
111
- | Quarter (~span/8) (r=12.38) | 5,924 | 6,936 | 11,190 | 7,081 |
112
- | Tiny (~span/1000) (r=1) | 41,368 | 38,706 | 220,785 | 157,777 |
112
+ | Full (~span/2) (r=49.50) | 4,683 | 4,522 | 8,927 | 2,011 |
113
+ | Half (~span/4) (r=24.75) | 5,822 | 6,362 | 8,898 | 3,899 |
114
+ | Quarter (~span/8) (r=12.38) | 5,798 | 6,791 | 11,108 | 7,083 |
115
+ | Tiny (~span/1000) (r=1) | 40,628 | 38,481 | 218,875 | 158,338 |
113
116
 
114
- #### Get Elements In Bounds
117
+ ##### Get Elements In Bounds
115
118
 
116
119
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
117
120
  | ------------------------------ | ------------------- | --------------------- | --------- | ------- |
118
- | Full (size≈99.00x9x9) | 6,536 | 6,552 | 26,350 | 3,597 |
119
- | Half (size≈49.50x4.5x4.5) | 7,376 | 7,413 | 46,213 | 37,593 |
120
- | Quarter (size≈24.75x2.25x2.25) | 7,520 | 7,551 | 168,253 | 121,961 |
121
- | Unit (size=1) | 7,612 | 7,590 | 323,189 | 163,462 |
121
+ | Full (size≈99.00x9x9) | 6,478 | 6,481 | 26,295 | 3,562 |
122
+ | Half (size≈49.50x4.5x4.5) | 7,367 | 7,417 | 46,056 | 37,401 |
123
+ | Quarter (size≈24.75x2.25x2.25) | 7,531 | 7,578 | 169,110 | 120,511 |
124
+ | Unit (size=1) | 7,612 | 7,626 | 325,145 | 161,706 |
122
125
 
123
- #### Approximate Nearest Neighbors
126
+ ##### Approximate Nearest Neighbors
124
127
 
125
128
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
126
129
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
127
- | 500 neighbors | 9,768 | 10,516 | 636 | 184 |
128
- | 100 neighbors | 50,714 | 66,402 | 5,931 | 2,247 |
129
- | 10 neighbors | 441,906 | 453,023 | 27,115 | 13,149 |
130
- | 1 neighbor | 503,317 | 596,546 | 45,358 | 22,171 |
130
+ | 500 neighbors | 9,732 | 10,597 | 637 | 185 |
131
+ | 100 neighbors | 51,320 | 69,698 | 5,914 | 2,235 |
132
+ | 10 neighbors | 435,223 | 421,196 | 27,006 | 12,804 |
133
+ | 1 neighbor | 664,302 | 592,441 | 45,255 | 21,503 |
131
134
 
132
- ### 1,000 entries
135
+ #### **1,000 entries**
133
136
 
134
- #### Construction
137
+ ##### Construction
135
138
 
136
- | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
137
- | ------------- | ------------------- | --------------------- | -------------- | ------------ |
138
- | 1,000 entries | 1,970 (0.001s) | 5,010 (0.000s) | 4,001 (0.000s) | 661 (0.002s) |
139
+ | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
140
+ | ------------- | ------------------- | --------------------- | -------------- | -------------- |
141
+ | 1,000 entries | 3,617 (0.000s) | 5,141 (0.000s) | 3,954 (0.000s) | 4,130 (0.000s) |
139
142
 
140
- #### Elements In Range
143
+ ##### Elements In Range
141
144
 
142
145
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
143
146
  | -------------------------- | ------------------- | --------------------- | --------- | ------- |
144
- | Full (~span/2) (r=4.5) | 12,016 | 14,151 | 24,554 | 19,616 |
145
- | Half (~span/4) (r=2.25) | 52,024 | 62,524 | 124,541 | 148,200 |
146
- | Quarter (~span/8) (r=1.13) | 60,415 | 64,618 | 338,784 | 226,687 |
147
- | Tiny (~span/1000) (r=1) | 62,656 | 64,645 | 338,789 | 226,826 |
147
+ | Full (~span/2) (r=4.5) | 11,802 | 13,903 | 24,582 | 21,692 |
148
+ | Half (~span/4) (r=2.25) | 51,580 | 61,355 | 123,544 | 144,993 |
149
+ | Quarter (~span/8) (r=1.13) | 61,600 | 63,517 | 337,985 | 224,573 |
150
+ | Tiny (~span/1000) (r=1) | 61,597 | 63,370 | 337,192 | 215,561 |
148
151
 
149
- #### Get Elements In Bounds
152
+ ##### Get Elements In Bounds
150
153
 
151
154
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
152
155
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
153
- | Full (size≈9x9x9) | 59,709 | 64,685 | 323,836 | 35,735 |
154
- | Half (size≈4.5x4.5x4.5) | 65,153 | 71,612 | 198,320 | 179,787 |
155
- | Quarter (size≈2.25x2.25x2.25) | 65,827 | 73,267 | 496,693 | 237,774 |
156
- | Unit (size=1) | 65,842 | 74,314 | 496,960 | 238,324 |
156
+ | Full (size≈9x9x9) | 59,706 | 64,466 | 323,948 | 35,609 |
157
+ | Half (size≈4.5x4.5x4.5) | 65,193 | 71,417 | 199,275 | 177,711 |
158
+ | Quarter (size≈2.25x2.25x2.25) | 65,932 | 73,139 | 502,862 | 234,032 |
159
+ | Unit (size=1) | 65,955 | 74,000 | 502,591 | 234,547 |
157
160
 
158
- #### Approximate Nearest Neighbors
161
+ ##### Approximate Nearest Neighbors
159
162
 
160
163
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
161
164
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
162
- | 500 neighbors | 15,885 | 14,863 | 3,257 | 617 |
163
- | 100 neighbors | 69,896 | 65,777 | 15,639 | 4,137 |
164
- | 10 neighbors | 473,839 | 394,340 | 73,941 | 33,359 |
165
- | 1 neighbor | 668,802 | 659,922 | 83,425 | 44,659 |
165
+ | 500 neighbors | 15,674 | 14,692 | 3,264 | 621 |
166
+ | 100 neighbors | 70,092 | 63,853 | 15,646 | 4,137 |
167
+ | 10 neighbors | 436,821 | 416,753 | 74,823 | 32,560 |
168
+ | 1 neighbor | 709,835 | 663,405 | 84,669 | 43,468 |
166
169
 
167
- ### 100 entries
170
+ #### **100 entries**
168
171
 
169
- #### Construction
172
+ ##### Construction
170
173
 
171
174
  | Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
172
175
  | ------------ | ------------------- | --------------------- | --------------- | --------------- |
173
- | 100 entries | 26,666 (0.000s) | 34,013 (0.000s) | 25,188 (0.000s) | 21,834 (0.000s) |
176
+ | 100 entries | 35,714 (0.000s) | 32,051 (0.000s) | 27,397 (0.000s) | 21,413 (0.000s) |
174
177
 
175
- #### Elements In Range
178
+ ##### Elements In Range
176
179
 
177
180
  | Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
178
181
  | -------------------------- | ------------------- | --------------------- | --------- | ------- |
179
- | Full (~span/2) (r=4.5) | 126,202 | 127,160 | 294,794 | 195,711 |
180
- | Half (~span/4) (r=2.25) | 146,998 | 149,086 | 318,059 | 307,466 |
181
- | Quarter (~span/8) (r=1.13) | 147,360 | 150,616 | 393,125 | 403,724 |
182
- | Tiny (~span/1000) (r=1) | 147,348 | 150,680 | 394,470 | 423,009 |
182
+ | Full (~span/2) (r=4.5) | 123,749 | 124,911 | 295,441 | 173,986 |
183
+ | Half (~span/4) (r=2.25) | 144,742 | 146,831 | 317,894 | 305,105 |
184
+ | Quarter (~span/8) (r=1.13) | 144,970 | 148,219 | 392,233 | 422,688 |
185
+ | Tiny (~span/1000) (r=1) | 144,979 | 148,160 | 394,402 | 397,230 |
183
186
 
184
- #### Get Elements In Bounds
187
+ ##### Get Elements In Bounds
185
188
 
186
189
  | Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
187
190
  | ----------------------- | ------------------- | --------------------- | --------- | ------- |
188
- | Full (size≈9x4x1) | 533,149 | 533,863 | 1,745,022 | 329,398 |
189
- | Half (size≈4.5x2x1) | 557,962 | 567,439 | 514,854 | 460,328 |
190
- | Quarter (size≈2.25x1x1) | 542,713 | 566,118 | 765,601 | 729,872 |
191
- | Unit (size=1) | 572,783 | 566,230 | 764,660 | 692,164 |
191
+ | Full (size≈9x4x1) | 542,170 | 541,750 | 1,808,352 | 327,419 |
192
+ | Half (size≈4.5x2x1) | 567,151 | 574,657 | 499,944 | 457,996 |
193
+ | Quarter (size≈2.25x1x1) | 581,138 | 575,322 | 777,105 | 728,444 |
194
+ | Unit (size=1) | 580,654 | 547,510 | 776,427 | 729,736 |
192
195
 
193
- #### Approximate Nearest Neighbors
196
+ ##### Approximate Nearest Neighbors
194
197
 
195
198
  | Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
196
199
  | ----------------------------- | ------------------- | --------------------- | --------- | ------- |
197
- | 100 neighbors (max) | 91,290 | 87,287 | 69,665 | 65,698 |
198
- | 10 neighbors | 608,256 | 510,875 | 105,249 | 101,525 |
199
- | 1 neighbor | 850,358 | 628,202 | 173,277 | 224,265 |
200
+ | 100 neighbors (max) | 92,016 | 88,604 | 69,691 | 65,613 |
201
+ | 10 neighbors | 622,325 | 548,943 | 105,436 | 99,977 |
202
+ | 1 neighbor | 876,886 | 640,575 | 172,804 | 210,070 |
200
203
 
201
204
  <!-- tabs:end -->
202
205
  <!-- SPATIAL_TREE_3D_BENCHMARKS_END -->