com.wallstop-studios.unity-helpers 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Docs/ILIST_SORTING_PERFORMANCE.md +92 -0
- package/Docs/ILIST_SORTING_PERFORMANCE.md.meta +7 -0
- package/Docs/INDEX.md +10 -1
- package/Docs/Images/random_generators.svg +7 -7
- package/Docs/RANDOM_PERFORMANCE.md +17 -14
- 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/README.md +25 -15
- package/Runtime/Core/Extension/IListExtensions.cs +720 -12
- package/Runtime/Core/Helper/UnityMainThreadDispatcher.cs +2 -3
- package/Runtime/Core/Random/AbstractRandom.cs +52 -5
- package/Runtime/Core/Random/DotNetRandom.cs +3 -3
- package/Runtime/Core/Random/FlurryBurstRandom.cs +285 -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 +312 -3
- 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 +3 -3
- 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/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
|
@@ -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.391s) | 3 (0.317s) | 2 (0.403s) | 2 (0.368s) |
|
|
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 | 33 | 14 |
|
|
43
|
+
| Half (~span/4) (r=24.75) | 138 | 161 | 253 | 154 |
|
|
44
|
+
| Quarter (~span/8) (r=12.38) | 943 | 1,225 | 1,636 | 1,398 |
|
|
45
|
+
| Tiny (~span/1000) (r=1) | 23,633 | 23,399 | 138,242 | 61,388 |
|
|
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) | 35 | 38 | 204 | 20 |
|
|
52
|
+
| Half (size≈49.50x49.50x49.50) | 40 | 46 | 1,248 | 272 |
|
|
53
|
+
| Quarter (size≈24.75x24.75x24.75) | 41 | 48 | 4,043 | 2,459 |
|
|
54
|
+
| Unit (size=1) | 41 | 49 | 182,201 | 75,627 |
|
|
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,823 | 10,001 | 2,321 | 297 |
|
|
61
|
+
| 100 neighbors | 62,378 | 68,501 | 10,973 | 3,386 |
|
|
62
|
+
| 10 neighbors | 394,113 | 400,030 | 15,886 | 7,915 |
|
|
63
|
+
| 1 neighbor | 542,886 | 429,790 | 19,854 | 8,605 |
|
|
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) |
|
|
71
|
+
| 100,000 entries | 34 (0.029s) | 48 (0.021s) | 65 (0.015s) | 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,
|
|
80
|
-
| Tiny (~span/1000) (r=1) | 26,
|
|
77
|
+
| Full (~span/2) (r=49.50) | 339 | 491 | 792 | 181 |
|
|
78
|
+
| Half (~span/4) (r=24.75) | 1,029 | 1,461 | 2,046 | 760 |
|
|
79
|
+
| Quarter (~span/8) (r=12.38) | 2,543 | 4,039 | 5,884 | 3,145 |
|
|
80
|
+
| Tiny (~span/1000) (r=1) | 26,019 | 29,892 | 177,305 | 81,121 |
|
|
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) | 610 | 762 | 2,614 | 346 |
|
|
87
|
+
| Half (size≈49.50x49.50x4.5) | 712 | 902 | 9,136 | 3,528 |
|
|
88
|
+
| Quarter (size≈24.75x24.75x2.25) | 729 | 930 | 46,338 | 23,782 |
|
|
89
|
+
| Unit (size=1) | 740 | 939 | 237,321 | 99,906 |
|
|
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 |
|
|
97
|
-
| 10 neighbors |
|
|
98
|
-
| 1 neighbor |
|
|
95
|
+
| 500 neighbors | 6,626 | 11,994 | 1,586 | 262 |
|
|
96
|
+
| 100 neighbors | 37,626 | 44,284 | 9,081 | 2,200 |
|
|
97
|
+
| 10 neighbors | 417,112 | 231,243 | 19,133 | 7,515 |
|
|
98
|
+
| 1 neighbor | 449,374 | 324,373 | 30,223 | 11,948 |
|
|
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 | 451 (0.002s) | 454 (0.002s) | 605 (0.002s) | 196 (0.005s) |
|
|
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,675 | 4,518 | 9,099 | 2,034 |
|
|
113
|
+
| Half (~span/4) (r=24.75) | 5,823 | 6,354 | 8,794 | 3,922 |
|
|
114
|
+
| Quarter (~span/8) (r=12.38) | 5,866 | 6,767 | 10,944 | 6,752 |
|
|
115
|
+
| Tiny (~span/1000) (r=1) | 41,567 | 38,086 | 214,981 | 128,576 |
|
|
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,291 | 6,249 | 25,591 | 3,619 |
|
|
122
|
+
| Half (size≈49.50x4.5x4.5) | 7,097 | 7,141 | 45,006 | 37,688 |
|
|
123
|
+
| Quarter (size≈24.75x2.25x2.25) | 7,245 | 7,264 | 163,085 | 121,891 |
|
|
124
|
+
| Unit (size=1) | 7,307 | 7,337 | 312,237 | 164,570 |
|
|
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,657 | 10,507 | 616 | 184 |
|
|
131
|
+
| 100 neighbors | 49,027 | 67,963 | 5,817 | 2,182 |
|
|
132
|
+
| 10 neighbors | 446,049 | 428,934 | 26,981 | 12,798 |
|
|
133
|
+
| 1 neighbor | 623,216 | 592,038 | 43,952 | 21,591 |
|
|
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,913 (0.000s) | 5,081 (0.000s) | 4,323 (0.000s) | 3,658 (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) |
|
|
148
|
-
| Half (~span/4) (r=2.25) |
|
|
149
|
-
| Quarter (~span/8) (r=1.13) |
|
|
150
|
-
| Tiny (~span/1000) (r=1) |
|
|
147
|
+
| Full (~span/2) (r=4.5) | 11,696 | 13,823 | 24,969 | 19,971 |
|
|
148
|
+
| Half (~span/4) (r=2.25) | 50,968 | 60,896 | 123,633 | 129,746 |
|
|
149
|
+
| Quarter (~span/8) (r=1.13) | 63,064 | 62,765 | 330,025 | 186,475 |
|
|
150
|
+
| Tiny (~span/1000) (r=1) | 63,087 | 62,848 | 329,869 | 197,969 |
|
|
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,861 | 61,905 | 309,570 | 36,019 |
|
|
157
|
+
| Half (size≈4.5x4.5x4.5) | 64,527 | 69,802 | 192,755 | 179,536 |
|
|
158
|
+
| Quarter (size≈2.25x2.25x2.25) | 65,139 | 70,314 | 482,726 | 233,477 |
|
|
159
|
+
| Unit (size=1) | 63,144 | 71,425 | 483,025 | 229,874 |
|
|
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 |
|
|
167
|
-
| 10 neighbors |
|
|
168
|
-
| 1 neighbor |
|
|
165
|
+
| 500 neighbors | 15,710 | 14,734 | 3,184 | 600 |
|
|
166
|
+
| 100 neighbors | 66,966 | 62,730 | 15,247 | 4,005 |
|
|
167
|
+
| 10 neighbors | 458,678 | 398,089 | 72,823 | 32,318 |
|
|
168
|
+
| 1 neighbor | 683,259 | 662,761 | 82,887 | 43,767 |
|
|
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 | 33,222 (0.000s) | 32,573 (0.000s) | 20,491 (0.000s) | 19,841 (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) | 147,
|
|
184
|
-
| Quarter (~span/8) (r=1.13) | 147,
|
|
185
|
-
| Tiny (~span/1000) (r=1) | 147,
|
|
182
|
+
| Full (~span/2) (r=4.5) | 127,317 | 128,629 | 291,676 | 172,914 |
|
|
183
|
+
| Half (~span/4) (r=2.25) | 147,989 | 150,244 | 307,046 | 270,030 |
|
|
184
|
+
| Quarter (~span/8) (r=1.13) | 147,905 | 151,405 | 385,634 | 379,165 |
|
|
185
|
+
| Tiny (~span/1000) (r=1) | 147,928 | 147,331 | 382,213 | 378,916 |
|
|
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) | 522,824 | 497,894 | 1,759,234 | 320,145 |
|
|
192
|
+
| Half (size≈4.5x2x1) | 537,503 | 544,668 | 498,113 | 445,151 |
|
|
193
|
+
| Quarter (size≈2.25x1x1) | 551,381 | 566,439 | 739,441 | 662,192 |
|
|
194
|
+
| Unit (size=1) | 551,255 | 558,590 | 739,304 | 718,275 |
|
|
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) |
|
|
201
|
-
| 10 neighbors |
|
|
202
|
-
| 1 neighbor |
|
|
200
|
+
| 100 neighbors (max) | 87,362 | 84,326 | 67,051 | 64,893 |
|
|
201
|
+
| 10 neighbors | 593,261 | 519,728 | 94,913 | 101,228 |
|
|
202
|
+
| 1 neighbor | 831,879 | 681,161 | 168,582 | 221,590 |
|
|
203
203
|
|
|
204
204
|
<!-- tabs:end -->
|
|
205
205
|
<!-- SPATIAL_TREE_3D_BENCHMARKS_END -->
|
package/README.md
CHANGED
|
@@ -454,24 +454,27 @@ Already read the [Top 5 Time-Savers](#-top-5-time-savers)? Jump directly to the
|
|
|
454
454
|
|
|
455
455
|
### Random Number Generators
|
|
456
456
|
|
|
457
|
-
Unity Helpers includes **
|
|
457
|
+
Unity Helpers includes **15 high-quality random number generators**, all implementing a rich `IRandom` interface:
|
|
458
458
|
|
|
459
459
|
#### Available Generators
|
|
460
460
|
|
|
461
|
-
| Generator | Speed | Quality | Use Case
|
|
462
|
-
| ------------------------------- | --------- | --------- |
|
|
463
|
-
| **IllusionFlow** ⭐ | Fast
|
|
464
|
-
| **PcgRandom**
|
|
465
|
-
| **
|
|
466
|
-
| **
|
|
467
|
-
| **
|
|
468
|
-
| **
|
|
469
|
-
| **
|
|
470
|
-
| **
|
|
471
|
-
| **
|
|
472
|
-
| **
|
|
473
|
-
| **
|
|
474
|
-
| **
|
|
461
|
+
| Generator | Speed | Quality | Use Case |
|
|
462
|
+
| ------------------------------- | --------- | --------- | ------------------------------------------ |
|
|
463
|
+
| **IllusionFlow** ⭐ | Very Fast | Excellent | Default choice (via PRNG.Instance) |
|
|
464
|
+
| **PcgRandom** ⭐ | Very Fast | Excellent | Deterministic gameplay; explicit seeding |
|
|
465
|
+
| **FlurryBurstRandom** | Very Fast | Excellent | High-quality PCG/Xoshiro alternative |
|
|
466
|
+
| **RomuDuo** | Very Fast | Good | Maximum performance needed |
|
|
467
|
+
| **LinearCongruentialGenerator** | Fastest | Fair | Simple, fast generation |
|
|
468
|
+
| **XorShiftRandom** | Very Fast | Good | General purpose |
|
|
469
|
+
| **XoroShiroRandom** | Very Fast | Good | General purpose |
|
|
470
|
+
| **SplitMix64** | Very Fast | Good | Initialization, hashing |
|
|
471
|
+
| **StormDropRandom** | Fast | Excellent | Large-buffer streams for heavy simulations |
|
|
472
|
+
| **PhotonSpinRandom** | Moderate | Excellent | Bulk generation; long non-overlapping runs |
|
|
473
|
+
| **SquirrelRandom** | Moderate | Good | Hash-based generation |
|
|
474
|
+
| **WyRandom** | Moderate | Good | Hashing applications |
|
|
475
|
+
| **DotNetRandom** | Moderate | Good | .NET compatibility |
|
|
476
|
+
| **SystemRandom** | Slow | Good | Backward compatibility |
|
|
477
|
+
| **UnityRandom** | Very Slow | Good | Unity compatibility |
|
|
475
478
|
|
|
476
479
|
⭐ **Recommended**: Use `PRNG.Instance` (currently IllusionFlow)
|
|
477
480
|
|
|
@@ -1124,6 +1127,12 @@ Unity Helpers is built with performance as a top priority:
|
|
|
1124
1127
|
- Safe for IL2CPP and AOT platforms
|
|
1125
1128
|
- [📊 Reflection Performance](Docs/REFLECTION_HELPERS.md)
|
|
1126
1129
|
|
|
1130
|
+
**List Sorting:**
|
|
1131
|
+
|
|
1132
|
+
- Multiple adaptive algorithms (`Ghost`, `Meteor`, `Power`, `Grail`, `Pattern-Defeating QuickSort`, `Insertion`) tuned for `IList<T>`
|
|
1133
|
+
- Deterministic datasets (sorted, nearly sorted, shuffled) across sizes from 100 to 1,000,000
|
|
1134
|
+
- [📊 IList Sorting Performance Benchmarks](Docs/ILIST_SORTING_PERFORMANCE.md)
|
|
1135
|
+
|
|
1127
1136
|
---
|
|
1128
1137
|
|
|
1129
1138
|
## Documentation Index
|
|
@@ -1157,6 +1166,7 @@ Unity Helpers is built with performance as a top priority:
|
|
|
1157
1166
|
|
|
1158
1167
|
- Random Performance — [Random Performance](Docs/RANDOM_PERFORMANCE.md)
|
|
1159
1168
|
- Reflection Helpers — [Reflection Helpers](Docs/REFLECTION_HELPERS.md)
|
|
1169
|
+
- IList Sorting Performance — [IList Sorting Performance](Docs/ILIST_SORTING_PERFORMANCE.md)
|
|
1160
1170
|
|
|
1161
1171
|
**Project Info:**
|
|
1162
1172
|
|