com.wallstop-studios.unity-helpers 2.1.0 → 2.1.2
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/AGENTS.md +1 -0
- package/Docs/ILIST_SORTING_PERFORMANCE.md +92 -0
- package/{package-lock.json.meta → Docs/ILIST_SORTING_PERFORMANCE.md.meta} +1 -1
- package/Docs/INDEX.md +11 -1
- package/Docs/Images/random_generators.svg +7 -7
- package/Docs/RANDOM_PERFORMANCE.md +17 -14
- package/Docs/REFLECTION_HELPERS.md +84 -1
- package/Docs/REFLECTION_PERFORMANCE.md +169 -0
- package/Docs/REFLECTION_PERFORMANCE.md.meta +7 -0
- package/Docs/RELATIONAL_COMPONENTS.md +6 -0
- package/Docs/RELATIONAL_COMPONENT_PERFORMANCE.md +63 -0
- package/Docs/RELATIONAL_COMPONENT_PERFORMANCE.md.meta +7 -0
- package/Docs/SPATIAL_TREE_2D_PERFORMANCE.md +64 -64
- package/Docs/SPATIAL_TREE_3D_PERFORMANCE.md +64 -64
- package/Editor/Core/Helper/AnimationEventHelpers.cs +1 -1
- package/Editor/Sprites/AnimationCopier.cs +1 -1
- package/Editor/Sprites/AnimationViewerWindow.cs +4 -4
- package/Editor/Sprites/SpriteSettingsApplierAPI.cs +2 -1
- package/Editor/Sprites/TextureResizerWizard.cs +4 -3
- package/Editor/Utils/ScriptableObjectSingletonCreator.cs +3 -3
- package/README.md +33 -18
- package/Runtime/Core/Attributes/BaseRelationalComponentAttribute.cs +147 -20
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +630 -117
- package/Runtime/Core/Attributes/NotNullAttribute.cs +5 -2
- package/Runtime/Core/Attributes/ParentComponentAttribute.cs +477 -103
- package/Runtime/Core/Attributes/RelationalComponentAssigner.cs +26 -3
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +19 -3
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +265 -92
- package/Runtime/Core/CodeGen.meta +8 -0
- package/Runtime/Core/DataStructure/ImmutableBitSet.cs +5 -20
- package/Runtime/Core/Extension/IListExtensions.cs +720 -12
- package/Runtime/Core/Helper/Logging/UnityLogTagFormatter.cs +11 -7
- package/Runtime/Core/Helper/Objects.cs +1 -1
- package/Runtime/Core/Helper/ReflectionHelpers.Factory.cs +5142 -0
- package/Runtime/Core/Helper/ReflectionHelpers.Factory.cs.meta +11 -0
- package/Runtime/Core/Helper/ReflectionHelpers.cs +1812 -1518
- package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +2 -3
- package/Runtime/Core/Math/Line2D.cs +2 -4
- package/Runtime/Core/Math/Line3D.cs +2 -4
- package/Runtime/Core/Random/AbstractRandom.cs +52 -5
- package/Runtime/Core/Random/DotNetRandom.cs +3 -3
- package/Runtime/Core/Random/FlurryBurstRandom.cs +279 -0
- package/Runtime/Core/Random/FlurryBurstRandom.cs.meta +3 -0
- package/Runtime/Core/Random/IllusionFlow.cs +3 -3
- package/Runtime/Core/Random/LinearCongruentialGenerator.cs +3 -3
- package/Runtime/Core/Random/PcgRandom.cs +6 -6
- package/Runtime/Core/Random/PhotonSpinRandom.cs +387 -0
- package/Runtime/Core/Random/PhotonSpinRandom.cs.meta +3 -0
- package/Runtime/Core/Random/RomuDuo.cs +3 -3
- package/Runtime/Core/Random/SplitMix64.cs +3 -3
- package/Runtime/Core/Random/SquirrelRandom.cs +6 -4
- package/Runtime/Core/Random/StormDropRandom.cs +271 -0
- package/Runtime/Core/Random/StormDropRandom.cs.meta +3 -0
- package/Runtime/Core/Random/UnityRandom.cs +3 -3
- package/Runtime/Core/Random/WyRandom.cs +6 -4
- package/Runtime/Core/Random/XorShiftRandom.cs +3 -3
- package/Runtime/Core/Random/XoroShiroRandom.cs +3 -3
- package/Runtime/Tags/AttributeMetadataCache.cs +316 -9
- package/Runtime/Tags/CosmeticEffectData.cs +1 -1
- package/Runtime/Visuals/UIToolkit/MultiFileSelectorElement.cs +3 -3
- package/Tests/Editor/Helper/HelpersTests.cs +2 -2
- package/Tests/Editor/Helper/ReflectionHelpersTypedEditorTests.cs +87 -0
- package/Tests/Editor/Helper/ReflectionHelpersTypedEditorTests.cs.meta +11 -0
- package/Tests/Editor/Helper/SpriteHelpersTests.cs +1 -1
- package/Tests/Editor/PrefabCheckerReportTests.cs +3 -3
- package/Tests/Editor/Sprites/AnimationCopierFilterTests.cs +18 -12
- package/Tests/Editor/Sprites/AnimationCopierWindowTests.cs +8 -7
- package/Tests/Editor/Sprites/AnimationViewerWindowTests.cs +2 -1
- package/Tests/Editor/Sprites/ScriptableSpriteAtlasEditorTests.cs +6 -5
- package/Tests/Editor/Sprites/SpriteCropperAdditionalTests.cs +2 -1
- package/Tests/Editor/Sprites/SpriteCropperTests.cs +7 -6
- package/Tests/Editor/Sprites/SpritePivotAdjusterAdditionalTests.cs +2 -1
- package/Tests/Editor/Sprites/SpritePivotAdjusterTests.cs +4 -3
- package/Tests/Editor/Sprites/TextureResizerWizardTests.cs +10 -9
- package/Tests/Editor/Sprites/TextureSettingsApplierAPITests.cs +2 -1
- package/Tests/Editor/Tags/AttributeMetadataCacheTests.cs +192 -0
- package/Tests/Editor/Tags/AttributeMetadataCacheTests.cs.meta +11 -0
- package/Tests/Editor/Tags.meta +8 -0
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +187 -1
- package/Tests/Runtime/Helper/ObjectsTests.cs +4 -4
- package/Tests/Runtime/Helper/ReflectionHelperCapabilityMatrixTests.cs +2923 -0
- package/Tests/Runtime/Helper/ReflectionHelperCapabilityMatrixTests.cs.meta +11 -0
- package/Tests/Runtime/Helper/ReflectionHelperTests.cs +660 -0
- package/Tests/Runtime/Integrations/Reflex/RelationalComponentsReflexTests.cs +2 -2
- package/Tests/Runtime/Performance/IListSortingPerformanceTests.cs +346 -0
- package/Tests/Runtime/Performance/IListSortingPerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +3 -0
- package/Tests/Runtime/Performance/ReflectionPerformanceTests.cs +1238 -0
- package/Tests/Runtime/Performance/ReflectionPerformanceTests.cs.meta +11 -0
- package/Tests/Runtime/Performance/RelationalComponentBenchmarkTests.cs +832 -0
- package/Tests/Runtime/Performance/RelationalComponentBenchmarkTests.cs.meta +11 -0
- package/Tests/Runtime/Random/FlurryBurstRandomTests.cs +12 -0
- package/Tests/Runtime/Random/FlurryBurstRandomTests.cs.meta +3 -0
- package/Tests/Runtime/Random/PhotonSpinRandomTests.cs +12 -0
- package/Tests/Runtime/Random/PhotonSpinRandomTests.cs.meta +3 -0
- package/Tests/Runtime/Random/RandomProtoSerializationTests.cs +14 -0
- package/Tests/Runtime/Random/RandomTestBase.cs +39 -4
- package/Tests/Runtime/Random/StormDropRandomTests.cs +12 -0
- package/Tests/Runtime/Random/StormDropRandomTests.cs.meta +3 -0
- package/Tests/Runtime/Serialization/ProtoInterfaceResolutionEdgeTests.cs +2 -2
- package/Tests/Runtime/Serialization/ProtoRootRegistrationTests.cs +1 -1
- package/Tests/Runtime/Serialization/ProtoSerializeBehaviorTests.cs +1 -1
- package/Tests/Runtime/Tags/PeriodicEffectDefinitionSerializationTests.cs +2 -2
- package/package.json +1 -1
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +0 -60
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +0 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Relational Component Performance Benchmarks
|
|
2
|
+
|
|
3
|
+
Relational component attributes (`[SiblingComponent]`, `[ParentComponent]`, `[ChildComponent]`) remove repetitive `GetComponent*` code. These benchmarks quantify the runtime cost of calling `Assign*Components` for common field shapes (single component, array, `List<T>`, and `HashSet<T>`) against hand-written lookups.
|
|
4
|
+
|
|
5
|
+
**How to refresh these tables:**
|
|
6
|
+
|
|
7
|
+
1. Open Unity’s Test Runner (EditMode/PlayMode as appropriate for your setup).
|
|
8
|
+
2. Run `RelationalComponentBenchmarkTests.Benchmark` inside `Tests/Runtime/Performance`.
|
|
9
|
+
3. The test logs the tables to the console and rewrites the section that matches the current operating system.
|
|
10
|
+
|
|
11
|
+
The script executes the benchmark test in batch mode, captures the markdown tables to `BenchmarkLogs/RelationalBenchmark.log`, and preserves the raw `TestResults.xml` when `-KeepResults` is specified.
|
|
12
|
+
|
|
13
|
+
## Windows (Editor/Player)
|
|
14
|
+
|
|
15
|
+
<!-- RELATIONAL_COMPONENTS_WINDOWS_START -->
|
|
16
|
+
|
|
17
|
+
_Last updated 2025-11-01 02:11 UTC on Windows 11 (10.0.26200) 64bit_
|
|
18
|
+
|
|
19
|
+
Numbers capture repeated `Assign*Components` calls for one second per scenario.
|
|
20
|
+
Higher operations per second are better.
|
|
21
|
+
|
|
22
|
+
### Operations per second (higher is better)
|
|
23
|
+
|
|
24
|
+
| Scenario | Relational Ops/s | Manual Ops/s | Rel/Manual | Iterations |
|
|
25
|
+
| ----------------- | ---------------: | -----------: | ---------: | ---------: |
|
|
26
|
+
| Parent - Single | 1,009,079 | 5,700,123 | 0.18x | 1,010,000 |
|
|
27
|
+
| Parent - Array | 676,149 | 3,327,317 | 0.20x | 680,000 |
|
|
28
|
+
| Parent - List | 766,704 | 4,238,343 | 0.18x | 770,000 |
|
|
29
|
+
| Parent - HashSet | 746,757 | 2,906,359 | 0.26x | 750,000 |
|
|
30
|
+
| Child - Single | 948,288 | 3,562,341 | 0.27x | 950,000 |
|
|
31
|
+
| Child - Array | 263,898 | 2,357,185 | 0.11x | 270,000 |
|
|
32
|
+
| Child - List | 247,098 | 2,623,979 | 0.09x | 250,000 |
|
|
33
|
+
| Child - HashSet | 247,462 | 1,708,595 | 0.14x | 250,000 |
|
|
34
|
+
| Sibling - Single | 3,855,983 | 14,542,964 | 0.27x | 3,860,000 |
|
|
35
|
+
| Sibling - Array | 925,080 | 2,537,309 | 0.36x | 930,000 |
|
|
36
|
+
| Sibling - List | 1,170,239 | 3,356,368 | 0.35x | 1,180,000 |
|
|
37
|
+
| Sibling - HashSet | 1,137,739 | 1,773,824 | 0.64x | 1,140,000 |
|
|
38
|
+
|
|
39
|
+
<!-- RELATIONAL_COMPONENTS_WINDOWS_END -->
|
|
40
|
+
|
|
41
|
+
## macOS
|
|
42
|
+
|
|
43
|
+
<!-- RELATIONAL_COMPONENTS_MACOS_START -->
|
|
44
|
+
|
|
45
|
+
Pending — run the relational component benchmark suite on macOS to capture results.
|
|
46
|
+
|
|
47
|
+
<!-- RELATIONAL_COMPONENTS_MACOS_END -->
|
|
48
|
+
|
|
49
|
+
## Linux
|
|
50
|
+
|
|
51
|
+
<!-- RELATIONAL_COMPONENTS_LINUX_START -->
|
|
52
|
+
|
|
53
|
+
Pending — run the relational component benchmark suite on Linux to capture results.
|
|
54
|
+
|
|
55
|
+
<!-- RELATIONAL_COMPONENTS_LINUX_END -->
|
|
56
|
+
|
|
57
|
+
## Other Platforms
|
|
58
|
+
|
|
59
|
+
<!-- RELATIONAL_COMPONENTS_OTHER_START -->
|
|
60
|
+
|
|
61
|
+
Pending — run the relational component benchmark suite on the target platform to capture results.
|
|
62
|
+
|
|
63
|
+
<!-- RELATIONAL_COMPONENTS_OTHER_END -->
|
|
@@ -32,34 +32,34 @@ This document contains performance benchmarks for the 2D spatial tree implementa
|
|
|
32
32
|
|
|
33
33
|
| Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
34
34
|
| ----------------- | ------------------- | --------------------- | ---------- | ---------- |
|
|
35
|
-
| 1,000,000 entries |
|
|
35
|
+
| 1,000,000 entries | 4 (0.243s) | 4 (0.207s) | 4 (0.245s) | 1 (0.617s) |
|
|
36
36
|
|
|
37
37
|
##### Elements In Range
|
|
38
38
|
|
|
39
39
|
| Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
40
40
|
| --------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
41
|
-
| Full (~span/2) (r=499.5) |
|
|
42
|
-
| Half (~span/4) (r=249.8) |
|
|
43
|
-
| Quarter (~span/8) (r=124.9) |
|
|
44
|
-
| Tiny (~span/1000) (r=1) | 103,
|
|
41
|
+
| Full (~span/2) (r=499.5) | 59 | 59 | 55 | 7 |
|
|
42
|
+
| Half (~span/4) (r=249.8) | 238 | 237 | 204 | 28 |
|
|
43
|
+
| Quarter (~span/8) (r=124.9) | 946 | 946 | 815 | 119 |
|
|
44
|
+
| Tiny (~span/1000) (r=1) | 103,114 | 105,599 | 143,605 | 107,881 |
|
|
45
45
|
|
|
46
46
|
##### Get Elements In Bounds
|
|
47
47
|
|
|
48
48
|
| Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
49
49
|
| -------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
50
|
-
| Full (size=999.0x999.0) |
|
|
51
|
-
| Half (size=499.5x499.5) | 1,
|
|
52
|
-
| Quarter (size=249.8x249.8) |
|
|
53
|
-
| Unit (size=1) | 149,
|
|
50
|
+
| Full (size=999.0x999.0) | 387 | 387 | 260 | 18 |
|
|
51
|
+
| Half (size=499.5x499.5) | 1,743 | 1,783 | 1,225 | 78 |
|
|
52
|
+
| Quarter (size=249.8x249.8) | 6,999 | 7,184 | 3,830 | 379 |
|
|
53
|
+
| Unit (size=1) | 149,073 | 153,060 | 197,411 | 112,249 |
|
|
54
54
|
|
|
55
55
|
##### Approximate Nearest Neighbors
|
|
56
56
|
|
|
57
57
|
| Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
58
58
|
| ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
59
|
-
| 500 neighbors | 8,
|
|
60
|
-
| 100 neighbors |
|
|
61
|
-
| 10 neighbors | 375,
|
|
62
|
-
| 1 neighbor |
|
|
59
|
+
| 500 neighbors | 8,393 | 16,831 | 12,443 | 69,035 |
|
|
60
|
+
| 100 neighbors | 79,169 | 76,070 | 73,196 | 175,174 |
|
|
61
|
+
| 10 neighbors | 375,437 | 347,050 | 210,299 | 283,034 |
|
|
62
|
+
| 1 neighbor | 548,229 | 537,303 | 236,159 | 296,044 |
|
|
63
63
|
|
|
64
64
|
#### **100,000 entries**
|
|
65
65
|
|
|
@@ -67,34 +67,34 @@ This document contains performance benchmarks for the 2D spatial tree implementa
|
|
|
67
67
|
|
|
68
68
|
| Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
69
69
|
| --------------- | ------------------- | --------------------- | ----------- | ----------- |
|
|
70
|
-
| 100,000 entries |
|
|
70
|
+
| 100,000 entries | 30 (0.033s) | 83 (0.012s) | 50 (0.020s) | 52 (0.019s) |
|
|
71
71
|
|
|
72
72
|
##### Elements In Range
|
|
73
73
|
|
|
74
74
|
| Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
75
75
|
| --------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
76
|
-
| Full (~span/2) (r=199.5) |
|
|
77
|
-
| Half (~span/4) (r=99.75) | 1,355 | 1,
|
|
78
|
-
| Quarter (~span/8) (r=49.88) | 4,
|
|
79
|
-
| Tiny (~span/1000) (r=1) |
|
|
76
|
+
| Full (~span/2) (r=199.5) | 601 | 601 | 601 | 75 |
|
|
77
|
+
| Half (~span/4) (r=99.75) | 1,355 | 1,360 | 1,247 | 186 |
|
|
78
|
+
| Quarter (~span/8) (r=49.88) | 4,647 | 5,176 | 4,308 | 724 |
|
|
79
|
+
| Tiny (~span/1000) (r=1) | 123,882 | 127,973 | 178,801 | 146,439 |
|
|
80
80
|
|
|
81
81
|
##### Get Elements In Bounds
|
|
82
82
|
|
|
83
83
|
| Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
84
84
|
| -------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
85
|
-
| Full (size=399.0x249.0) | 4,
|
|
86
|
-
| Half (size=199.5x124.5) | 9,
|
|
87
|
-
| Quarter (size=99.75x62.25) | 25,
|
|
88
|
-
| Unit (size=1) |
|
|
85
|
+
| Full (size=399.0x249.0) | 4,564 | 4,426 | 4,528 | 236 |
|
|
86
|
+
| Half (size=199.5x124.5) | 9,936 | 11,933 | 7,900 | 968 |
|
|
87
|
+
| Quarter (size=99.75x62.25) | 25,355 | 34,261 | 19,666 | 3,807 |
|
|
88
|
+
| Unit (size=1) | 183,758 | 185,397 | 243,205 | 154,754 |
|
|
89
89
|
|
|
90
90
|
##### Approximate Nearest Neighbors
|
|
91
91
|
|
|
92
92
|
| Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
93
93
|
| ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
94
|
-
| 500 neighbors | 9,
|
|
95
|
-
| 100 neighbors | 49,
|
|
96
|
-
| 10 neighbors |
|
|
97
|
-
| 1 neighbor |
|
|
94
|
+
| 500 neighbors | 9,954 | 9,765 | 11,488 | 68,918 |
|
|
95
|
+
| 100 neighbors | 49,784 | 92,586 | 54,095 | 228,430 |
|
|
96
|
+
| 10 neighbors | 495,765 | 392,500 | 232,811 | 330,114 |
|
|
97
|
+
| 1 neighbor | 474,000 | 548,240 | 276,662 | 373,417 |
|
|
98
98
|
|
|
99
99
|
#### **10,000 entries**
|
|
100
100
|
|
|
@@ -102,34 +102,34 @@ This document contains performance benchmarks for the 2D spatial tree implementa
|
|
|
102
102
|
|
|
103
103
|
| Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
104
104
|
| -------------- | ------------------- | --------------------- | ------------ | ------------ |
|
|
105
|
-
| 10,000 entries |
|
|
105
|
+
| 10,000 entries | 547 (0.002s) | 834 (0.001s) | 400 (0.002s) | 495 (0.002s) |
|
|
106
106
|
|
|
107
107
|
##### Elements In Range
|
|
108
108
|
|
|
109
109
|
| Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
110
110
|
| --------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
111
|
-
| Full (~span/2) (r=49.50) | 5,
|
|
112
|
-
| Half (~span/4) (r=24.75) | 22,
|
|
113
|
-
| Quarter (~span/8) (r=12.38) | 44,
|
|
114
|
-
| Tiny (~span/1000) (r=1) | 167,
|
|
111
|
+
| Full (~span/2) (r=49.50) | 5,936 | 5,940 | 5,937 | 728 |
|
|
112
|
+
| Half (~span/4) (r=24.75) | 22,308 | 22,212 | 13,883 | 2,898 |
|
|
113
|
+
| Quarter (~span/8) (r=12.38) | 44,216 | 51,466 | 38,049 | 12,112 |
|
|
114
|
+
| Tiny (~span/1000) (r=1) | 167,797 | 162,536 | 225,225 | 167,319 |
|
|
115
115
|
|
|
116
116
|
##### Get Elements In Bounds
|
|
117
117
|
|
|
118
118
|
| Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
119
119
|
| -------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
120
|
-
| Full (size=99.00x99.00) |
|
|
121
|
-
| Half (size=49.50x49.50) |
|
|
122
|
-
| Quarter (size=24.75x24.75) |
|
|
123
|
-
| Unit (size=1) |
|
|
120
|
+
| Full (size=99.00x99.00) | 43,812 | 45,320 | 45,943 | 2,393 |
|
|
121
|
+
| Half (size=49.50x49.50) | 165,611 | 167,277 | 37,147 | 9,201 |
|
|
122
|
+
| Quarter (size=24.75x24.75) | 75,380 | 103,887 | 74,913 | 35,161 |
|
|
123
|
+
| Unit (size=1) | 240,461 | 232,011 | 316,878 | 179,116 |
|
|
124
124
|
|
|
125
125
|
##### Approximate Nearest Neighbors
|
|
126
126
|
|
|
127
127
|
| Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
128
128
|
| ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
129
|
-
| 500 neighbors | 13,
|
|
130
|
-
| 100 neighbors |
|
|
131
|
-
| 10 neighbors |
|
|
132
|
-
| 1 neighbor |
|
|
129
|
+
| 500 neighbors | 13,093 | 13,040 | 14,300 | 64,499 |
|
|
130
|
+
| 100 neighbors | 61,778 | 56,766 | 92,858 | 234,910 |
|
|
131
|
+
| 10 neighbors | 384,629 | 375,996 | 277,725 | 418,141 |
|
|
132
|
+
| 1 neighbor | 570,984 | 631,087 | 315,877 | 458,622 |
|
|
133
133
|
|
|
134
134
|
#### **1,000 entries**
|
|
135
135
|
|
|
@@ -137,34 +137,34 @@ This document contains performance benchmarks for the 2D spatial tree implementa
|
|
|
137
137
|
|
|
138
138
|
| Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
139
139
|
| ------------- | ------------------- | --------------------- | -------------- | -------------- |
|
|
140
|
-
| 1,000 entries |
|
|
140
|
+
| 1,000 entries | 5,068 (0.000s) | 8,012 (0.000s) | 4,892 (0.000s) | 4,601 (0.000s) |
|
|
141
141
|
|
|
142
142
|
##### Elements In Range
|
|
143
143
|
|
|
144
144
|
| Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
145
145
|
| -------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
146
|
-
| Full (~span/2) (r=24.50) |
|
|
147
|
-
| Half (~span/4) (r=12.25) |
|
|
148
|
-
| Quarter (~span/8) (r=6.13) |
|
|
149
|
-
| Tiny (~span/1000) (r=1) |
|
|
146
|
+
| Full (~span/2) (r=24.50) | 57,446 | 57,835 | 57,233 | 7,336 |
|
|
147
|
+
| Half (~span/4) (r=12.25) | 59,633 | 76,664 | 56,713 | 14,575 |
|
|
148
|
+
| Quarter (~span/8) (r=6.13) | 94,257 | 108,779 | 94,736 | 37,945 |
|
|
149
|
+
| Tiny (~span/1000) (r=1) | 234,339 | 237,770 | 336,003 | 248,171 |
|
|
150
150
|
|
|
151
151
|
##### Get Elements In Bounds
|
|
152
152
|
|
|
153
153
|
| Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
154
154
|
| ------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
155
|
-
| Full (size=49.00x19.00) |
|
|
156
|
-
| Half (size=24.50x9.5) |
|
|
157
|
-
| Quarter (size=12.25x4.75) |
|
|
158
|
-
| Unit (size=1) |
|
|
155
|
+
| Full (size=49.00x19.00) | 470,407 | 412,267 | 538,202 | 24,028 |
|
|
156
|
+
| Half (size=24.50x9.5) | 165,816 | 290,631 | 126,258 | 74,325 |
|
|
157
|
+
| Quarter (size=12.25x4.75) | 268,875 | 284,067 | 192,865 | 167,079 |
|
|
158
|
+
| Unit (size=1) | 339,691 | 328,876 | 456,878 | 277,918 |
|
|
159
159
|
|
|
160
160
|
##### Approximate Nearest Neighbors
|
|
161
161
|
|
|
162
162
|
| Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
163
163
|
| ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
164
|
-
| 500 neighbors |
|
|
165
|
-
| 100 neighbors |
|
|
166
|
-
| 10 neighbors |
|
|
167
|
-
| 1 neighbor |
|
|
164
|
+
| 500 neighbors | 45,750 | 42,976 | 39,035 | 69,433 |
|
|
165
|
+
| 100 neighbors | 81,044 | 75,353 | 88,211 | 270,879 |
|
|
166
|
+
| 10 neighbors | 519,642 | 601,494 | 355,438 | 532,110 |
|
|
167
|
+
| 1 neighbor | 703,159 | 575,482 | 385,585 | 546,455 |
|
|
168
168
|
|
|
169
169
|
#### **100 entries**
|
|
170
170
|
|
|
@@ -172,33 +172,33 @@ This document contains performance benchmarks for the 2D spatial tree implementa
|
|
|
172
172
|
|
|
173
173
|
| Construction | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
174
174
|
| ------------ | ------------------- | --------------------- | --------------- | --------------- |
|
|
175
|
-
| 100 entries |
|
|
175
|
+
| 100 entries | 43,103 (0.000s) | 37,453 (0.000s) | 27,322 (0.000s) | 23,640 (0.000s) |
|
|
176
176
|
|
|
177
177
|
##### Elements In Range
|
|
178
178
|
|
|
179
179
|
| Elements In Range | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
180
180
|
| -------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
181
|
-
| Full (~span/2) (r=4.5) | 505,
|
|
182
|
-
| Half (~span/4) (r=2.25) |
|
|
183
|
-
| Quarter (~span/8) (r=1.13) |
|
|
184
|
-
| Tiny (~span/1000) (r=1) |
|
|
181
|
+
| Full (~span/2) (r=4.5) | 505,251 | 506,757 | 504,329 | 71,963 |
|
|
182
|
+
| Half (~span/4) (r=2.25) | 430,851 | 430,658 | 256,517 | 235,075 |
|
|
183
|
+
| Quarter (~span/8) (r=1.13) | 430,724 | 430,736 | 601,355 | 338,153 |
|
|
184
|
+
| Tiny (~span/1000) (r=1) | 430,754 | 430,284 | 598,471 | 340,692 |
|
|
185
185
|
|
|
186
186
|
##### Get Elements In Bounds
|
|
187
187
|
|
|
188
188
|
| Get Elements In Bounds | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
189
189
|
| ------------------------ | ------------------- | --------------------- | ---------- | ------- |
|
|
190
|
-
| Full (size=9x9) | 2,
|
|
191
|
-
| Half (size=4.5x4.5) |
|
|
192
|
-
| Quarter (size=2.25x2.25) |
|
|
193
|
-
| Unit (size=1) |
|
|
190
|
+
| Full (size=9x9) | 2,448,546 | 2,259,205 | 2,137,171 | 223,802 |
|
|
191
|
+
| Half (size=4.5x4.5) | 567,838 | 557,169 | 365,308 | 370,472 |
|
|
192
|
+
| Quarter (size=2.25x2.25) | 583,946 | 592,479 | 788,572 | 393,465 |
|
|
193
|
+
| Unit (size=1) | 556,276 | 593,260 | 788,937 | 392,330 |
|
|
194
194
|
|
|
195
195
|
##### Approximate Nearest Neighbors
|
|
196
196
|
|
|
197
197
|
| Approximate Nearest Neighbors | KDTree2D (Balanced) | KDTree2D (Unbalanced) | QuadTree2D | RTree2D |
|
|
198
198
|
| ----------------------------- | ------------------- | --------------------- | ---------- | ------- |
|
|
199
|
-
| 100 neighbors (max) |
|
|
200
|
-
| 10 neighbors |
|
|
201
|
-
| 1 neighbor |
|
|
199
|
+
| 100 neighbors (max) | 158,290 | 155,464 | 200,721 | 301,513 |
|
|
200
|
+
| 10 neighbors | 605,208 | 436,057 | 535,377 | 756,820 |
|
|
201
|
+
| 1 neighbor | 573,182 | 536,531 | 597,137 | 799,246 |
|
|
202
202
|
|
|
203
203
|
<!-- tabs:end -->
|
|
204
204
|
<!-- SPATIAL_TREE_BENCHMARKS_END -->
|
|
@@ -33,34 +33,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
|
|
|
33
33
|
|
|
34
34
|
| Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
35
35
|
| ----------------- | ------------------- | --------------------- | ---------- | ---------- |
|
|
36
|
-
| 1,000,000 entries | 2 (0.
|
|
36
|
+
| 1,000,000 entries | 2 (0.386s) | 3 (0.311s) | 3 (0.314s) | 2 (0.387s) |
|
|
37
37
|
|
|
38
38
|
##### Elements In Range
|
|
39
39
|
|
|
40
40
|
| Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
41
41
|
| --------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
42
|
-
| Full (~span/2) (r=49.50) | 17 | 20 |
|
|
43
|
-
| Half (~span/4) (r=24.75) |
|
|
44
|
-
| Quarter (~span/8) (r=12.38) |
|
|
45
|
-
| Tiny (~span/1000) (r=1) | 23,
|
|
42
|
+
| Full (~span/2) (r=49.50) | 17 | 20 | 34 | 17 |
|
|
43
|
+
| Half (~span/4) (r=24.75) | 134 | 157 | 256 | 150 |
|
|
44
|
+
| Quarter (~span/8) (r=12.38) | 925 | 1,215 | 1,661 | 1,427 |
|
|
45
|
+
| Tiny (~span/1000) (r=1) | 23,280 | 23,446 | 137,215 | 74,463 |
|
|
46
46
|
|
|
47
47
|
##### Get Elements In Bounds
|
|
48
48
|
|
|
49
49
|
| Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
50
50
|
| -------------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
51
|
-
| Full (size≈99.00x99.00x99.00) |
|
|
52
|
-
| Half (size≈49.50x49.50x49.50) |
|
|
53
|
-
| Quarter (size≈24.75x24.75x24.75) |
|
|
54
|
-
| Unit (size=1) |
|
|
51
|
+
| Full (size≈99.00x99.00x99.00) | 34 | 41 | 227 | 24 |
|
|
52
|
+
| Half (size≈49.50x49.50x49.50) | 41 | 47 | 1,259 | 279 |
|
|
53
|
+
| Quarter (size≈24.75x24.75x24.75) | 41 | 48 | 3,996 | 2,504 |
|
|
54
|
+
| Unit (size=1) | 41 | 46 | 181,169 | 73,748 |
|
|
55
55
|
|
|
56
56
|
##### Approximate Nearest Neighbors
|
|
57
57
|
|
|
58
58
|
| Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
59
59
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
60
|
-
| 500 neighbors | 5,
|
|
61
|
-
| 100 neighbors |
|
|
62
|
-
| 10 neighbors |
|
|
63
|
-
| 1 neighbor |
|
|
60
|
+
| 500 neighbors | 5,889 | 10,198 | 2,309 | 303 |
|
|
61
|
+
| 100 neighbors | 62,035 | 74,060 | 11,015 | 3,398 |
|
|
62
|
+
| 10 neighbors | 386,107 | 383,898 | 16,257 | 7,968 |
|
|
63
|
+
| 1 neighbor | 541,268 | 511,878 | 20,078 | 8,672 |
|
|
64
64
|
|
|
65
65
|
#### **100,000 entries**
|
|
66
66
|
|
|
@@ -68,34 +68,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
|
|
|
68
68
|
|
|
69
69
|
| Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
70
70
|
| --------------- | ------------------- | --------------------- | ----------- | ----------- |
|
|
71
|
-
| 100,000 entries | 34 (0.029s) | 47 (0.021s) |
|
|
71
|
+
| 100,000 entries | 34 (0.029s) | 47 (0.021s) | 42 (0.024s) | 43 (0.023s) |
|
|
72
72
|
|
|
73
73
|
##### Elements In Range
|
|
74
74
|
|
|
75
75
|
| Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
76
76
|
| --------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
77
|
-
| Full (~span/2) (r=49.50) |
|
|
78
|
-
| Half (~span/4) (r=24.75) | 1,
|
|
79
|
-
| Quarter (~span/8) (r=12.38) | 2,567 |
|
|
80
|
-
| Tiny (~span/1000) (r=1) | 26,
|
|
77
|
+
| Full (~span/2) (r=49.50) | 337 | 486 | 769 | 200 |
|
|
78
|
+
| Half (~span/4) (r=24.75) | 1,015 | 1,448 | 2,018 | 815 |
|
|
79
|
+
| Quarter (~span/8) (r=12.38) | 2,567 | 4,000 | 5,907 | 3,314 |
|
|
80
|
+
| Tiny (~span/1000) (r=1) | 26,783 | 29,830 | 176,298 | 100,804 |
|
|
81
81
|
|
|
82
82
|
##### Get Elements In Bounds
|
|
83
83
|
|
|
84
84
|
| Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
85
85
|
| ------------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
86
|
-
| Full (size≈99.00x99.00x9) |
|
|
87
|
-
| Half (size≈49.50x49.50x4.5) |
|
|
88
|
-
| Quarter (size≈24.75x24.75x2.25) |
|
|
89
|
-
| Unit (size=1) |
|
|
86
|
+
| Full (size≈99.00x99.00x9) | 637 | 772 | 2,696 | 339 |
|
|
87
|
+
| Half (size≈49.50x49.50x4.5) | 731 | 899 | 10,007 | 3,497 |
|
|
88
|
+
| Quarter (size≈24.75x24.75x2.25) | 745 | 924 | 47,730 | 24,350 |
|
|
89
|
+
| Unit (size=1) | 750 | 934 | 246,402 | 103,577 |
|
|
90
90
|
|
|
91
91
|
##### Approximate Nearest Neighbors
|
|
92
92
|
|
|
93
93
|
| Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
94
94
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
95
|
-
| 500 neighbors | 6,
|
|
96
|
-
| 100 neighbors | 38,
|
|
97
|
-
| 10 neighbors |
|
|
98
|
-
| 1 neighbor |
|
|
95
|
+
| 500 neighbors | 6,701 | 12,076 | 1,626 | 272 |
|
|
96
|
+
| 100 neighbors | 38,478 | 43,819 | 9,281 | 2,287 |
|
|
97
|
+
| 10 neighbors | 457,528 | 324,448 | 19,296 | 7,848 |
|
|
98
|
+
| 1 neighbor | 428,011 | 322,856 | 30,123 | 12,433 |
|
|
99
99
|
|
|
100
100
|
#### **10,000 entries**
|
|
101
101
|
|
|
@@ -103,34 +103,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
|
|
|
103
103
|
|
|
104
104
|
| Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
105
105
|
| -------------- | ------------------- | --------------------- | ------------ | ------------ |
|
|
106
|
-
| 10,000 entries |
|
|
106
|
+
| 10,000 entries | 440 (0.002s) | 467 (0.002s) | 602 (0.002s) | 425 (0.002s) |
|
|
107
107
|
|
|
108
108
|
##### Elements In Range
|
|
109
109
|
|
|
110
110
|
| Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
111
111
|
| --------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
112
|
-
| Full (~span/2) (r=49.50) | 4,
|
|
113
|
-
| Half (~span/4) (r=24.75) | 5,
|
|
114
|
-
| Quarter (~span/8) (r=12.38) | 5,
|
|
115
|
-
| Tiny (~span/1000) (r=1) | 41,
|
|
112
|
+
| Full (~span/2) (r=49.50) | 4,788 | 4,609 | 8,939 | 2,061 |
|
|
113
|
+
| Half (~span/4) (r=24.75) | 5,959 | 6,429 | 8,899 | 4,006 |
|
|
114
|
+
| Quarter (~span/8) (r=12.38) | 5,929 | 6,874 | 11,071 | 7,017 |
|
|
115
|
+
| Tiny (~span/1000) (r=1) | 41,423 | 38,778 | 217,367 | 157,581 |
|
|
116
116
|
|
|
117
117
|
##### Get Elements In Bounds
|
|
118
118
|
|
|
119
119
|
| Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
120
120
|
| ------------------------------ | ------------------- | --------------------- | --------- | ------- |
|
|
121
|
-
| Full (size≈99.00x9x9) |
|
|
122
|
-
| Half (size≈49.50x4.5x4.5) |
|
|
123
|
-
| Quarter (size≈24.75x2.25x2.25) |
|
|
124
|
-
| Unit (size=1) |
|
|
121
|
+
| Full (size≈99.00x9x9) | 6,446 | 6,428 | 26,035 | 3,555 |
|
|
122
|
+
| Half (size≈49.50x4.5x4.5) | 7,296 | 7,344 | 45,721 | 37,319 |
|
|
123
|
+
| Quarter (size≈24.75x2.25x2.25) | 7,459 | 7,495 | 165,622 | 121,514 |
|
|
124
|
+
| Unit (size=1) | 7,506 | 7,548 | 317,874 | 163,916 |
|
|
125
125
|
|
|
126
126
|
##### Approximate Nearest Neighbors
|
|
127
127
|
|
|
128
128
|
| Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
129
129
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
130
|
-
| 500 neighbors | 9,
|
|
131
|
-
| 100 neighbors |
|
|
132
|
-
| 10 neighbors |
|
|
133
|
-
| 1 neighbor |
|
|
130
|
+
| 500 neighbors | 9,716 | 10,667 | 638 | 184 |
|
|
131
|
+
| 100 neighbors | 50,838 | 68,861 | 5,947 | 2,267 |
|
|
132
|
+
| 10 neighbors | 452,030 | 403,786 | 27,125 | 13,409 |
|
|
133
|
+
| 1 neighbor | 625,292 | 623,208 | 43,364 | 22,623 |
|
|
134
134
|
|
|
135
135
|
#### **1,000 entries**
|
|
136
136
|
|
|
@@ -138,34 +138,34 @@ This document contains performance benchmarks for the 3D spatial tree implementa
|
|
|
138
138
|
|
|
139
139
|
| Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
140
140
|
| ------------- | ------------------- | --------------------- | -------------- | -------------- |
|
|
141
|
-
| 1,000 entries | 3,
|
|
141
|
+
| 1,000 entries | 3,951 (0.000s) | 5,170 (0.000s) | 3,157 (0.000s) | 4,184 (0.000s) |
|
|
142
142
|
|
|
143
143
|
##### Elements In Range
|
|
144
144
|
|
|
145
145
|
| Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
146
146
|
| -------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
147
|
-
| Full (~span/2) (r=4.5) | 12,
|
|
148
|
-
| Half (~span/4) (r=2.25) | 52,
|
|
149
|
-
| Quarter (~span/8) (r=1.13) | 62,
|
|
150
|
-
| Tiny (~span/1000) (r=1) | 62,
|
|
147
|
+
| Full (~span/2) (r=4.5) | 12,041 | 14,157 | 24,772 | 21,692 |
|
|
148
|
+
| Half (~span/4) (r=2.25) | 52,426 | 62,638 | 123,516 | 146,308 |
|
|
149
|
+
| Quarter (~span/8) (r=1.13) | 62,349 | 64,703 | 323,699 | 226,590 |
|
|
150
|
+
| Tiny (~span/1000) (r=1) | 62,088 | 64,685 | 338,837 | 226,613 |
|
|
151
151
|
|
|
152
152
|
##### Get Elements In Bounds
|
|
153
153
|
|
|
154
154
|
| Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
155
155
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
156
|
-
| Full (size≈9x9x9) |
|
|
157
|
-
| Half (size≈4.5x4.5x4.5) |
|
|
158
|
-
| Quarter (size≈2.25x2.25x2.25) |
|
|
159
|
-
| Unit (size=1) |
|
|
156
|
+
| Full (size≈9x9x9) | 58,987 | 64,476 | 322,955 | 36,020 |
|
|
157
|
+
| Half (size≈4.5x4.5x4.5) | 64,592 | 71,575 | 198,560 | 181,224 |
|
|
158
|
+
| Quarter (size≈2.25x2.25x2.25) | 65,299 | 73,113 | 500,481 | 239,455 |
|
|
159
|
+
| Unit (size=1) | 65,256 | 74,180 | 501,485 | 240,070 |
|
|
160
160
|
|
|
161
161
|
##### Approximate Nearest Neighbors
|
|
162
162
|
|
|
163
163
|
| Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
164
164
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
165
|
-
| 500 neighbors | 15,
|
|
166
|
-
| 100 neighbors | 70,
|
|
167
|
-
| 10 neighbors |
|
|
168
|
-
| 1 neighbor |
|
|
165
|
+
| 500 neighbors | 15,930 | 14,706 | 3,297 | 622 |
|
|
166
|
+
| 100 neighbors | 70,057 | 66,204 | 15,802 | 4,169 |
|
|
167
|
+
| 10 neighbors | 461,442 | 384,350 | 75,444 | 33,715 |
|
|
168
|
+
| 1 neighbor | 673,046 | 704,737 | 86,033 | 45,140 |
|
|
169
169
|
|
|
170
170
|
#### **100 entries**
|
|
171
171
|
|
|
@@ -173,33 +173,33 @@ This document contains performance benchmarks for the 3D spatial tree implementa
|
|
|
173
173
|
|
|
174
174
|
| Construction | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
175
175
|
| ------------ | ------------------- | --------------------- | --------------- | --------------- |
|
|
176
|
-
| 100 entries |
|
|
176
|
+
| 100 entries | 32,679 (0.000s) | 33,003 (0.000s) | 25,974 (0.000s) | 13,404 (0.000s) |
|
|
177
177
|
|
|
178
178
|
##### Elements In Range
|
|
179
179
|
|
|
180
180
|
| Elements In Range | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
181
181
|
| -------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
182
|
-
| Full (~span/2) (r=4.5) |
|
|
183
|
-
| Half (~span/4) (r=2.25) |
|
|
184
|
-
| Quarter (~span/8) (r=1.13) |
|
|
185
|
-
| Tiny (~span/1000) (r=1) |
|
|
182
|
+
| Full (~span/2) (r=4.5) | 125,671 | 127,643 | 291,486 | 184,062 |
|
|
183
|
+
| Half (~span/4) (r=2.25) | 146,268 | 149,611 | 314,058 | 296,509 |
|
|
184
|
+
| Quarter (~span/8) (r=1.13) | 146,574 | 151,138 | 376,930 | 419,883 |
|
|
185
|
+
| Tiny (~span/1000) (r=1) | 143,793 | 151,149 | 395,012 | 419,518 |
|
|
186
186
|
|
|
187
187
|
##### Get Elements In Bounds
|
|
188
188
|
|
|
189
189
|
| Get Elements In Bounds | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
190
190
|
| ----------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
191
|
-
| Full (size≈9x4x1) |
|
|
192
|
-
| Half (size≈4.5x2x1) |
|
|
193
|
-
| Quarter (size≈2.25x1x1) |
|
|
194
|
-
| Unit (size=1) |
|
|
191
|
+
| Full (size≈9x4x1) | 539,503 | 540,192 | 1,850,861 | 335,224 |
|
|
192
|
+
| Half (size≈4.5x2x1) | 567,669 | 576,187 | 517,599 | 467,910 |
|
|
193
|
+
| Quarter (size≈2.25x1x1) | 580,752 | 579,288 | 772,525 | 747,066 |
|
|
194
|
+
| Unit (size=1) | 581,174 | 582,127 | 773,401 | 693,825 |
|
|
195
195
|
|
|
196
196
|
##### Approximate Nearest Neighbors
|
|
197
197
|
|
|
198
198
|
| Approximate Nearest Neighbors | KDTree3D (Balanced) | KDTree3D (Unbalanced) | OctTree3D | RTree3D |
|
|
199
199
|
| ----------------------------- | ------------------- | --------------------- | --------- | ------- |
|
|
200
|
-
| 100 neighbors (max) | 92,
|
|
201
|
-
| 10 neighbors |
|
|
202
|
-
| 1 neighbor |
|
|
200
|
+
| 100 neighbors (max) | 92,209 | 88,369 | 69,873 | 66,050 |
|
|
201
|
+
| 10 neighbors | 626,406 | 497,039 | 105,917 | 102,085 |
|
|
202
|
+
| 1 neighbor | 886,386 | 681,324 | 170,819 | 226,654 |
|
|
203
203
|
|
|
204
204
|
<!-- tabs:end -->
|
|
205
205
|
<!-- SPATIAL_TREE_3D_BENCHMARKS_END -->
|
|
@@ -1530,7 +1530,7 @@ namespace WallstopStudios.UnityHelpers.Editor.Sprites
|
|
|
1530
1530
|
bool useSource
|
|
1531
1531
|
)
|
|
1532
1532
|
{
|
|
1533
|
-
|
|
1533
|
+
IList<AnimationFileInfo> arr = ApplyFilterAndSort(list.ToList()).AsList();
|
|
1534
1534
|
sb.AppendLine($"== {inputTitle} ({arr.Count}) ==");
|
|
1535
1535
|
for (int i = 0; i < arr.Count; i++)
|
|
1536
1536
|
{
|