com.wallstop-studios.unity-helpers 2.0.0-rc26 → 2.0.0-rc30
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/.gitattributes +63 -63
- package/.github/workflows/npm-publish.yml +60 -0
- package/.github/workflows/unity-package.yml +87 -0
- package/Editor/AnimationCopier.cs +158 -158
- package/Editor/AnimationCopier.cs.meta +2 -2
- package/Editor/AnimationCreator.cs +262 -262
- package/Editor/AnimationCreator.cs.meta +11 -11
- package/Editor/AnimationEventEditor.cs +887 -887
- package/Editor/AnimatorControllerCopier.cs +162 -162
- package/Editor/AnimatorControllerCopier.cs.meta +2 -2
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs +34 -34
- package/Editor/CustomEditors/MatchColliderToSpriteEditor.cs.meta +2 -2
- package/Editor/CustomEditors.meta +2 -2
- package/Editor/EnsureTextureSizeWizard.cs +110 -110
- package/Editor/EnsureTextureSizeWizard.cs.meta +2 -2
- package/Editor/PrefabCheckWizard.cs +165 -165
- package/Editor/PrefabCheckWizard.cs.meta +11 -11
- package/Editor/SpriteSettingsApplier.cs +168 -168
- package/Editor/SpriteSettingsApplier.cs.meta +2 -2
- package/Editor/StringInListeDrawer.cs +56 -56
- package/Editor/TextureResizerWizard.cs +181 -181
- package/Editor/TextureResizerWizard.cs.meta +2 -2
- package/Editor/TextureSettingsApplier.cs +171 -171
- package/Editor/TextureSettingsApplier.cs.meta +2 -2
- package/Editor/Utils/EditorUtilities.cs +22 -22
- package/Editor/Utils/EditorUtilities.cs.meta +11 -11
- package/Editor/Utils/ReadOnlyPropertyDrawer.cs +26 -26
- package/Editor/Utils/ReadOnlyPropertyDrawer.cs.meta +11 -11
- package/Editor/Utils.meta +8 -8
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef +17 -17
- package/Editor/WallstopStudios.UnityHelpers.Editor.asmdef.meta +7 -7
- package/LICENSE +21 -21
- package/LICENSE.md +6 -6
- package/LICENSE.meta +7 -7
- package/README.md +117 -99
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.dll.meta +33 -33
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml +223 -223
- package/Runtime/Binaries/Microsoft.Bcl.AsyncInterfaces.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Encodings.Web.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Encodings.Web.xml +935 -935
- package/Runtime/Binaries/System.Text.Encodings.Web.xml.meta +7 -7
- package/Runtime/Binaries/System.Text.Json.dll.meta +33 -33
- package/Runtime/Binaries/System.Text.Json.xml +4829 -4829
- package/Runtime/Binaries/System.Text.Json.xml.meta +7 -7
- package/Runtime/Binaries.meta +8 -8
- package/Runtime/Core/Attributes/AnimationEventAttribute.cs +131 -131
- package/Runtime/Core/Attributes/ChildComponentAttribute.cs +189 -183
- package/Runtime/Core/Attributes/KSerializableAttribute.cs +19 -19
- package/Runtime/Core/Attributes/NotNullAttribute.cs +32 -32
- package/Runtime/Core/Attributes/ParentComponent.cs +184 -178
- package/Runtime/Core/Attributes/ReadOnlyAttribute.cs +6 -6
- package/Runtime/Core/Attributes/RelationalComponentExtensions.cs +14 -14
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs +119 -111
- package/Runtime/Core/Attributes/SiblingComponentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs +101 -101
- package/Runtime/Core/Attributes/ValidateAssignmentAttribute.cs.meta +11 -11
- package/Runtime/Core/Attributes.meta +8 -8
- package/Runtime/Core/DataStructure/Adapters/FastVector2Int.cs +92 -92
- package/Runtime/Core/DataStructure/Adapters/FastVector3Int.cs +185 -185
- package/Runtime/Core/DataStructure/Adapters/KGuid.cs +305 -305
- package/Runtime/Core/DataStructure/Adapters/KVector2.cs +80 -80
- package/Runtime/Core/DataStructure/Circle.cs +50 -50
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +155 -155
- package/Runtime/Core/DataStructure/ISpatialTree.cs +60 -60
- package/Runtime/Core/DataStructure/ISpatialTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/KDTree.cs +290 -290
- package/Runtime/Core/DataStructure/KDTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/QuadTree.cs +279 -279
- package/Runtime/Core/DataStructure/RTree.cs +336 -336
- package/Runtime/Core/DataStructure/RTree.cs.meta +11 -11
- package/Runtime/Core/DataStructure/StringWrapper.cs +91 -91
- package/Runtime/Core/DataStructure/TimedCache.cs +51 -51
- package/Runtime/Core/Extension/AnimatorExtensions.cs +25 -25
- package/Runtime/Core/Extension/CircleExtensions.cs +25 -25
- package/Runtime/Core/Extension/ColorExtensions.cs +338 -338
- package/Runtime/Core/Extension/DictionaryExtensions.cs +251 -251
- package/Runtime/Core/Extension/DirectionExtensions.cs +213 -213
- package/Runtime/Core/Extension/HashSetExtensions.cs +12 -12
- package/Runtime/Core/Extension/IEnumerableExtensions.cs +122 -122
- package/Runtime/Core/Extension/IListExtensions.cs +89 -89
- package/Runtime/Core/Extension/LoggingExtensions.cs +258 -258
- package/Runtime/Core/Extension/RandomExtensions.cs +109 -109
- package/Runtime/Core/Extension/StringExtensions.cs +151 -151
- package/Runtime/Core/Extension/UnityExtensions.cs +1607 -1607
- package/Runtime/Core/Helper/ArrayConverter.cs +39 -39
- package/Runtime/Core/Helper/ArrayConverter.cs.meta +2 -2
- package/Runtime/Core/Helper/AssignUtilities.cs +14 -14
- package/Runtime/Core/Helper/AssignUtilities.cs.meta +11 -11
- package/Runtime/Core/Helper/Enumerables.cs +17 -17
- package/Runtime/Core/Helper/Geometry.cs +43 -43
- package/Runtime/Core/Helper/Helpers.cs +722 -722
- package/Runtime/Core/Helper/Helpers.cs.meta +11 -11
- package/Runtime/Core/Helper/IterationHelpers.cs +32 -32
- package/Runtime/Core/Helper/IterationHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/LifetimeHelpers.cs +13 -13
- package/Runtime/Core/Helper/Objects.cs +767 -767
- package/Runtime/Core/Helper/Partials/LogHelpers.cs +13 -13
- package/Runtime/Core/Helper/Partials/LogHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/MathHelpers.cs +30 -30
- package/Runtime/Core/Helper/Partials/MathHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs +388 -388
- package/Runtime/Core/Helper/Partials/ObjectHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs +167 -167
- package/Runtime/Core/Helper/Partials/TransformHelpers.cs.meta +2 -2
- package/Runtime/Core/Helper/Partials.meta +2 -2
- package/Runtime/Core/Helper/ReflectionHelpers.cs +152 -0
- package/Runtime/Core/Helper/ReflectionHelpers.cs.meta +3 -0
- package/Runtime/Core/Helper/SpriteHelpers.cs +86 -86
- package/Runtime/Core/Helper/SpriteHelpers.cs.meta +11 -11
- package/Runtime/Core/Helper/StringInList.cs +31 -31
- package/Runtime/Core/Helper/StringInList.cs.meta +11 -11
- package/Runtime/Core/Helper/WallMath.cs +166 -166
- package/Runtime/Core/Math/Line.cs +55 -55
- package/Runtime/Core/Math/Parabola.cs +47 -47
- package/Runtime/Core/Math/PointPolygonCheck.cs +36 -36
- package/Runtime/Core/Math/PointPolygonCheck.cs.meta +11 -11
- package/Runtime/Core/Math/Range.cs +92 -92
- package/Runtime/Core/Math/XXHash.cs +310 -310
- package/Runtime/Core/Math/XXHash.cs.meta +11 -11
- package/Runtime/Core/Model/Direction.cs +43 -43
- package/Runtime/Core/OneOf/FastOneOf.cs +152 -152
- package/Runtime/Core/OneOf/None.cs +4 -4
- package/Runtime/Core/Random/AbstractRandom.cs +561 -561
- package/Runtime/Core/Random/DotNetRandom.cs +52 -52
- package/Runtime/Core/Random/DotNetRandom.cs.meta +2 -2
- package/Runtime/Core/Random/IRandom.cs +160 -160
- package/Runtime/Core/Random/NativePcgRandom.cs +97 -97
- package/Runtime/Core/Random/PRNG.cs +7 -7
- package/Runtime/Core/Random/PRNG.cs.meta +2 -2
- package/Runtime/Core/Random/PcgRandom.cs +149 -149
- package/Runtime/Core/Random/PerlinNoise.cs +369 -369
- package/Runtime/Core/Random/PerlinNoise.cs.meta +2 -2
- package/Runtime/Core/Random/RandomState.cs +131 -131
- package/Runtime/Core/Random/RandomUtilities.cs +26 -26
- package/Runtime/Core/Random/RandomUtilities.cs.meta +11 -11
- package/Runtime/Core/Random/RomuDuo.cs +116 -116
- package/Runtime/Core/Random/RomuDuo.cs.meta +2 -2
- package/Runtime/Core/Random/SplitMix64.cs +94 -94
- package/Runtime/Core/Random/SplitMix64.cs.meta +2 -2
- package/Runtime/Core/Random/SquirrelRandom.cs +84 -84
- package/Runtime/Core/Random/SystemRandom.cs +162 -162
- package/Runtime/Core/Random/ThreadLocalRandom.cs +12 -12
- package/Runtime/Core/Random/UnityRandom.cs +57 -57
- package/Runtime/Core/Random/UnityRandom.cs.meta +11 -11
- package/Runtime/Core/Random/WyRandom.cs +121 -121
- package/Runtime/Core/Random/WyRandom.cs.meta +2 -2
- package/Runtime/Core/Random/XorShiftRandom.cs +47 -47
- package/Runtime/Core/Random/XorShiftRandom.cs.meta +11 -11
- package/Runtime/Core/Random/XorShiroRandom.cs +117 -117
- package/Runtime/Core/Random/XorShiroRandom.cs.meta +2 -2
- package/Runtime/Core/Serialization/JsonConverters/Vector2Converter.cs +74 -74
- package/Runtime/Core/Serialization/JsonConverters/Vector3Converter.cs +81 -81
- package/Runtime/Core/Serialization/Serializer.cs +184 -184
- package/Runtime/Core/Threading/SingleThreadedThreadPool.cs +107 -107
- package/Runtime/Protobuf-Net/System.Buffers.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml +5379 -5379
- package/Runtime/Protobuf-Net/System.Collections.Immutable.xml.meta +7 -7
- package/Runtime/Protobuf-Net/System.Numerics.Vectors.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.dll.meta +33 -33
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml +290 -290
- package/Runtime/Protobuf-Net/System.Runtime.CompilerServices.Unsafe.xml.meta +7 -7
- package/Runtime/Protobuf-Net/protobuf-net.Core.dll.meta +33 -33
- package/Runtime/Protobuf-Net/protobuf-net.dll.meta +33 -33
- package/Runtime/UI/LayeredImage.cs +364 -364
- package/Runtime/UI/LayeredImage.cs.meta +2 -2
- package/Runtime/UI.meta +2 -2
- package/Runtime/Utils/AnimationEventEqualityComparer.cs +161 -161
- package/Runtime/Utils/AnimatorEnumStateMachine.cs +88 -88
- package/Runtime/Utils/Buffers.cs +32 -32
- package/Runtime/Utils/CenterPointOffset.cs +30 -30
- package/Runtime/Utils/CenterPointOffset.cs.meta +2 -2
- package/Runtime/Utils/CircleLineRenderer.cs +134 -134
- package/Runtime/Utils/CoroutineHandler.cs +4 -4
- package/Runtime/Utils/CoroutineHandler.cs.meta +2 -2
- package/Runtime/Utils/MatchColliderToSprite.cs +94 -94
- package/Runtime/Utils/MatchColliderToSprite.cs.meta +2 -2
- package/Runtime/Utils/Oscillator.cs +27 -27
- package/Runtime/Utils/RuntimeSingleton.cs +57 -57
- package/Runtime/Utils/RuntimeSingleton.cs.meta +11 -11
- package/Runtime/Utils/SetTextureImportData.cs +69 -69
- package/Runtime/Utils/SpriteRendererMetadata.cs +312 -312
- package/Runtime/Utils/SpriteRendererMetadata.cs.meta +2 -2
- package/Runtime/Utils/SpriteRendererSyncer.cs +100 -100
- package/Runtime/Utils/SpriteRendererSyncer.cs.meta +2 -2
- package/Runtime/Utils/TextureScale.cs +179 -179
- package/Runtime/Utils/TextureScale.cs.meta +2 -2
- package/Runtime/WallstopStudios.UnityHelpers.asmdef +13 -13
- package/Tests/Runtime/Attributes/ChildComponentTests.cs +81 -81
- package/Tests/Runtime/Attributes/Components/ExpectChildSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/Components/ExpectParentSpriteRenderers.cs +28 -28
- package/Tests/Runtime/Attributes/ParentComponentTests.cs +68 -68
- package/Tests/Runtime/Components/RelationalComponentTester.cs +34 -0
- package/Tests/Runtime/Components/RelationalComponentTester.cs.meta +3 -0
- package/Tests/Runtime/Components.meta +3 -0
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/BalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/CyclicBufferTests.cs +324 -324
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/QuadTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs +130 -130
- package/Tests/Runtime/DataStructures/SpatialTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/DataStructures/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/DataStructures.meta +8 -8
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs +439 -439
- package/Tests/Runtime/Extensions/DictionaryExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/IListExtensionTests.cs +76 -76
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs +27 -27
- package/Tests/Runtime/Extensions/RandomExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions/StringExtensionTests.cs +31 -31
- package/Tests/Runtime/Extensions/StringExtensionTests.cs.meta +2 -2
- package/Tests/Runtime/Extensions.meta +2 -2
- package/Tests/Runtime/Helper/ArrayConverterTests.cs +19 -19
- package/Tests/Runtime/Helper/ArrayConverterTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/ObjectHelperTests.cs +402 -402
- package/Tests/Runtime/Helper/ObjectHelperTests.cs.meta +2 -2
- package/Tests/Runtime/Helper/WallMathTests.cs +233 -233
- package/Tests/Runtime/Helper/WallMathTests.cs.meta +2 -2
- package/Tests/Runtime/Helper.meta +2 -2
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/KDTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs +14 -14
- package/Tests/Runtime/Performance/QuadTreePerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs +139 -139
- package/Tests/Runtime/Performance/RandomPerformanceTests.cs.meta +11 -11
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs +37 -0
- package/Tests/Runtime/Performance/RelationComponentPerformanceTests.cs.meta +3 -0
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs +154 -154
- package/Tests/Runtime/Performance/SpatialTreePerformanceTest.cs.meta +11 -11
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs +14 -14
- package/Tests/Runtime/Performance/UnbalancedKDTreeTests.cs.meta +11 -11
- package/Tests/Runtime/Performance.meta +8 -8
- package/Tests/Runtime/Random/DotNetRandomTests.cs +9 -9
- package/Tests/Runtime/Random/DotNetRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/PcgRandomTests.cs +9 -9
- package/Tests/Runtime/Random/PcgRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/RandomTestBase.cs +787 -787
- package/Tests/Runtime/Random/RandomTestBase.cs.meta +11 -11
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs +9 -9
- package/Tests/Runtime/Random/RomuDuoRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs +9 -9
- package/Tests/Runtime/Random/SplitMix64RandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/SquirrelRandomTests.cs +14 -14
- package/Tests/Runtime/Random/SquirrelRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/SystemRandomTests.cs +10 -10
- package/Tests/Runtime/Random/SystemRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/UnityRandomTests.cs +9 -9
- package/Tests/Runtime/Random/UnityRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/WyRandomTests.cs +9 -9
- package/Tests/Runtime/Random/WyRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random/XorShiftRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiftRandomTests.cs.meta +11 -11
- package/Tests/Runtime/Random/XorShiroRandomTests.cs +9 -9
- package/Tests/Runtime/Random/XorShiroRandomTests.cs.meta +2 -2
- package/Tests/Runtime/Random.meta +8 -8
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs +84 -84
- package/Tests/Runtime/Serialization/JsonSerializationTest.cs.meta +2 -2
- package/Tests/Runtime/Serialization.meta +2 -2
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs +399 -399
- package/Tests/Runtime/Utils/SpriteRendererMetadataTests.cs.meta +2 -2
- package/Tests/Runtime/Utils.meta +2 -2
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef +22 -22
- package/Tests/Runtime/WallstopStudios.UnityHelpers.Tests.Runtime.asmdef.meta +7 -7
- package/Tests/Runtime.meta +8 -8
- package/package.json +38 -38
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
namespace UnityHelpers.Tests.Performance
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Diagnostics;
|
|
5
|
-
using NUnit.Framework;
|
|
6
|
-
using UnityHelpers.Core.Random;
|
|
7
|
-
|
|
8
|
-
public sealed class RandomPerformanceTests
|
|
9
|
-
{
|
|
10
|
-
[Test]
|
|
11
|
-
public void Benchmark()
|
|
12
|
-
{
|
|
13
|
-
TimeSpan timeout = TimeSpan.FromSeconds(1.125);
|
|
14
|
-
|
|
15
|
-
UnityEngine.Debug.Log(
|
|
16
|
-
$"| Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | "
|
|
17
|
-
);
|
|
18
|
-
UnityEngine.Debug.Log(
|
|
19
|
-
$"| ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- |"
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
RunTest(new PcgRandom(), timeout);
|
|
23
|
-
RunTest(new SystemRandom(), timeout);
|
|
24
|
-
RunTest(new SquirrelRandom(), timeout);
|
|
25
|
-
RunTest(new XorShiftRandom(), timeout);
|
|
26
|
-
RunTest(new DotNetRandom(), timeout);
|
|
27
|
-
RunTest(new WyRandom(), timeout);
|
|
28
|
-
RunTest(new SplitMix64(), timeout);
|
|
29
|
-
RunTest(new RomuDuo(), timeout);
|
|
30
|
-
RunTest(new XorShiroRandom(), timeout);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
private static void RunTest<T>(T random, TimeSpan timeout)
|
|
34
|
-
where T : IRandom
|
|
35
|
-
{
|
|
36
|
-
int nextBool = RunNextBool(timeout, random);
|
|
37
|
-
int nextInt = RunNext(timeout, random);
|
|
38
|
-
int nextUint = RunNextUint(timeout, random);
|
|
39
|
-
int nextFloat = RunNextFloat(timeout, random);
|
|
40
|
-
int nextDouble = RunNextDouble(timeout, random);
|
|
41
|
-
int nextUintRange = RunNextUintRange(timeout, random);
|
|
42
|
-
|
|
43
|
-
UnityEngine.Debug.Log(
|
|
44
|
-
$"| {random.GetType().Name} | "
|
|
45
|
-
+ $"{(nextBool / timeout.TotalSeconds):N0} | "
|
|
46
|
-
+ $"{(nextInt / timeout.TotalSeconds):N0} | "
|
|
47
|
-
+ $"{(nextUint / timeout.TotalSeconds):N0} | "
|
|
48
|
-
+ $"{(nextFloat / timeout.TotalSeconds):N0} | "
|
|
49
|
-
+ $"{(nextDouble / timeout.TotalSeconds):N0} |"
|
|
50
|
-
+ $"{(nextUintRange / timeout.TotalSeconds):N0} |"
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Copy-pasta'd for maximum speed
|
|
55
|
-
private static int RunNext<T>(TimeSpan timeout, T random)
|
|
56
|
-
where T : IRandom
|
|
57
|
-
{
|
|
58
|
-
int count = 0;
|
|
59
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
60
|
-
do
|
|
61
|
-
{
|
|
62
|
-
_ = random.Next();
|
|
63
|
-
++count;
|
|
64
|
-
} while (timer.Elapsed < timeout);
|
|
65
|
-
|
|
66
|
-
return count;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private static int RunNextBool<T>(TimeSpan timeout, T random)
|
|
70
|
-
where T : IRandom
|
|
71
|
-
{
|
|
72
|
-
int count = 0;
|
|
73
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
74
|
-
do
|
|
75
|
-
{
|
|
76
|
-
_ = random.NextBool();
|
|
77
|
-
++count;
|
|
78
|
-
} while (timer.Elapsed < timeout);
|
|
79
|
-
|
|
80
|
-
return count;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
private static int RunNextUint<T>(TimeSpan timeout, T random)
|
|
84
|
-
where T : IRandom
|
|
85
|
-
{
|
|
86
|
-
int count = 0;
|
|
87
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
88
|
-
do
|
|
89
|
-
{
|
|
90
|
-
_ = random.NextUint();
|
|
91
|
-
++count;
|
|
92
|
-
} while (timer.Elapsed < timeout);
|
|
93
|
-
|
|
94
|
-
return count;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
private static int RunNextUintRange<T>(TimeSpan timeout, T random)
|
|
98
|
-
where T : IRandom
|
|
99
|
-
{
|
|
100
|
-
int count = 0;
|
|
101
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
102
|
-
do
|
|
103
|
-
{
|
|
104
|
-
_ = random.NextUint(1_000);
|
|
105
|
-
++count;
|
|
106
|
-
} while (timer.Elapsed < timeout);
|
|
107
|
-
|
|
108
|
-
return count;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
private static int RunNextFloat<T>(TimeSpan timeout, T random)
|
|
112
|
-
where T : IRandom
|
|
113
|
-
{
|
|
114
|
-
int count = 0;
|
|
115
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
116
|
-
do
|
|
117
|
-
{
|
|
118
|
-
_ = random.NextFloat();
|
|
119
|
-
++count;
|
|
120
|
-
} while (timer.Elapsed < timeout);
|
|
121
|
-
|
|
122
|
-
return count;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
private static int RunNextDouble<T>(TimeSpan timeout, T random)
|
|
126
|
-
where T : IRandom
|
|
127
|
-
{
|
|
128
|
-
int count = 0;
|
|
129
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
130
|
-
do
|
|
131
|
-
{
|
|
132
|
-
_ = random.NextDouble();
|
|
133
|
-
++count;
|
|
134
|
-
} while (timer.Elapsed < timeout);
|
|
135
|
-
|
|
136
|
-
return count;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
1
|
+
namespace UnityHelpers.Tests.Performance
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Diagnostics;
|
|
5
|
+
using NUnit.Framework;
|
|
6
|
+
using UnityHelpers.Core.Random;
|
|
7
|
+
|
|
8
|
+
public sealed class RandomPerformanceTests
|
|
9
|
+
{
|
|
10
|
+
[Test]
|
|
11
|
+
public void Benchmark()
|
|
12
|
+
{
|
|
13
|
+
TimeSpan timeout = TimeSpan.FromSeconds(1.125);
|
|
14
|
+
|
|
15
|
+
UnityEngine.Debug.Log(
|
|
16
|
+
$"| Random | NextBool | Next | NextUInt | NextFloat | NextDouble | NextUint - Range | "
|
|
17
|
+
);
|
|
18
|
+
UnityEngine.Debug.Log(
|
|
19
|
+
$"| ------ | -------- | ---- | -------- | --------- | ---------- | ---------------- |"
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
RunTest(new PcgRandom(), timeout);
|
|
23
|
+
RunTest(new SystemRandom(), timeout);
|
|
24
|
+
RunTest(new SquirrelRandom(), timeout);
|
|
25
|
+
RunTest(new XorShiftRandom(), timeout);
|
|
26
|
+
RunTest(new DotNetRandom(), timeout);
|
|
27
|
+
RunTest(new WyRandom(), timeout);
|
|
28
|
+
RunTest(new SplitMix64(), timeout);
|
|
29
|
+
RunTest(new RomuDuo(), timeout);
|
|
30
|
+
RunTest(new XorShiroRandom(), timeout);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private static void RunTest<T>(T random, TimeSpan timeout)
|
|
34
|
+
where T : IRandom
|
|
35
|
+
{
|
|
36
|
+
int nextBool = RunNextBool(timeout, random);
|
|
37
|
+
int nextInt = RunNext(timeout, random);
|
|
38
|
+
int nextUint = RunNextUint(timeout, random);
|
|
39
|
+
int nextFloat = RunNextFloat(timeout, random);
|
|
40
|
+
int nextDouble = RunNextDouble(timeout, random);
|
|
41
|
+
int nextUintRange = RunNextUintRange(timeout, random);
|
|
42
|
+
|
|
43
|
+
UnityEngine.Debug.Log(
|
|
44
|
+
$"| {random.GetType().Name} | "
|
|
45
|
+
+ $"{(nextBool / timeout.TotalSeconds):N0} | "
|
|
46
|
+
+ $"{(nextInt / timeout.TotalSeconds):N0} | "
|
|
47
|
+
+ $"{(nextUint / timeout.TotalSeconds):N0} | "
|
|
48
|
+
+ $"{(nextFloat / timeout.TotalSeconds):N0} | "
|
|
49
|
+
+ $"{(nextDouble / timeout.TotalSeconds):N0} |"
|
|
50
|
+
+ $"{(nextUintRange / timeout.TotalSeconds):N0} |"
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Copy-pasta'd for maximum speed
|
|
55
|
+
private static int RunNext<T>(TimeSpan timeout, T random)
|
|
56
|
+
where T : IRandom
|
|
57
|
+
{
|
|
58
|
+
int count = 0;
|
|
59
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
60
|
+
do
|
|
61
|
+
{
|
|
62
|
+
_ = random.Next();
|
|
63
|
+
++count;
|
|
64
|
+
} while (timer.Elapsed < timeout);
|
|
65
|
+
|
|
66
|
+
return count;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private static int RunNextBool<T>(TimeSpan timeout, T random)
|
|
70
|
+
where T : IRandom
|
|
71
|
+
{
|
|
72
|
+
int count = 0;
|
|
73
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
74
|
+
do
|
|
75
|
+
{
|
|
76
|
+
_ = random.NextBool();
|
|
77
|
+
++count;
|
|
78
|
+
} while (timer.Elapsed < timeout);
|
|
79
|
+
|
|
80
|
+
return count;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private static int RunNextUint<T>(TimeSpan timeout, T random)
|
|
84
|
+
where T : IRandom
|
|
85
|
+
{
|
|
86
|
+
int count = 0;
|
|
87
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
88
|
+
do
|
|
89
|
+
{
|
|
90
|
+
_ = random.NextUint();
|
|
91
|
+
++count;
|
|
92
|
+
} while (timer.Elapsed < timeout);
|
|
93
|
+
|
|
94
|
+
return count;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
private static int RunNextUintRange<T>(TimeSpan timeout, T random)
|
|
98
|
+
where T : IRandom
|
|
99
|
+
{
|
|
100
|
+
int count = 0;
|
|
101
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
102
|
+
do
|
|
103
|
+
{
|
|
104
|
+
_ = random.NextUint(1_000);
|
|
105
|
+
++count;
|
|
106
|
+
} while (timer.Elapsed < timeout);
|
|
107
|
+
|
|
108
|
+
return count;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private static int RunNextFloat<T>(TimeSpan timeout, T random)
|
|
112
|
+
where T : IRandom
|
|
113
|
+
{
|
|
114
|
+
int count = 0;
|
|
115
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
116
|
+
do
|
|
117
|
+
{
|
|
118
|
+
_ = random.NextFloat();
|
|
119
|
+
++count;
|
|
120
|
+
} while (timer.Elapsed < timeout);
|
|
121
|
+
|
|
122
|
+
return count;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private static int RunNextDouble<T>(TimeSpan timeout, T random)
|
|
126
|
+
where T : IRandom
|
|
127
|
+
{
|
|
128
|
+
int count = 0;
|
|
129
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
130
|
+
do
|
|
131
|
+
{
|
|
132
|
+
_ = random.NextDouble();
|
|
133
|
+
++count;
|
|
134
|
+
} while (timer.Elapsed < timeout);
|
|
135
|
+
|
|
136
|
+
return count;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: cd362cfc7f5bcc74fa5a42a2670f070c
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: cd362cfc7f5bcc74fa5a42a2670f070c
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
namespace UnityHelpers.Tests.Performance
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Diagnostics;
|
|
5
|
+
using Components;
|
|
6
|
+
using Core.Attributes;
|
|
7
|
+
using NUnit.Framework;
|
|
8
|
+
using UnityEngine;
|
|
9
|
+
|
|
10
|
+
public sealed class RelationComponentPerformanceTests
|
|
11
|
+
{
|
|
12
|
+
[Test]
|
|
13
|
+
public void RelationalPerformanceTest()
|
|
14
|
+
{
|
|
15
|
+
int count = 0;
|
|
16
|
+
|
|
17
|
+
GameObject go = new("Test", typeof(RelationalComponentTester));
|
|
18
|
+
RelationalComponentTester tester = go.GetComponent<RelationalComponentTester>();
|
|
19
|
+
// Pre-warm
|
|
20
|
+
tester.AssignRelationalComponents();
|
|
21
|
+
|
|
22
|
+
TimeSpan timeout = TimeSpan.FromSeconds(10);
|
|
23
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
24
|
+
do
|
|
25
|
+
{
|
|
26
|
+
tester.AssignRelationalComponents();
|
|
27
|
+
++count;
|
|
28
|
+
} while (timer.Elapsed < timeout);
|
|
29
|
+
|
|
30
|
+
UnityEngine.Debug.Log($"Averaged {count / timeout.TotalSeconds} operations / second.");
|
|
31
|
+
|
|
32
|
+
Assert.AreNotEqual(0, tester._childColliders.Length);
|
|
33
|
+
Assert.AreNotEqual(0, tester._parentColliders.Length);
|
|
34
|
+
Assert.AreNotEqual(0, tester._siblingColliders.Length);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
namespace UnityHelpers.Tests.Performance
|
|
2
|
-
{
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections;
|
|
5
|
-
using System.Collections.Generic;
|
|
6
|
-
using System.Diagnostics;
|
|
7
|
-
using System.Linq;
|
|
8
|
-
using System.Threading.Tasks;
|
|
9
|
-
using Core.DataStructure;
|
|
10
|
-
using NUnit.Framework;
|
|
11
|
-
using UnityEngine;
|
|
12
|
-
using UnityEngine.TestTools;
|
|
13
|
-
|
|
14
|
-
public abstract class SpatialTreePerformanceTest<TTree>
|
|
15
|
-
where TTree : ISpatialTree<Vector2>
|
|
16
|
-
{
|
|
17
|
-
protected abstract TTree CreateTree(IEnumerable<Vector2> points);
|
|
18
|
-
|
|
19
|
-
[UnityTest]
|
|
20
|
-
public IEnumerator Performance()
|
|
21
|
-
{
|
|
22
|
-
UnityEngine.Debug.Log("| Operation | Operations / Second |");
|
|
23
|
-
UnityEngine.Debug.Log("| --------- | ------------------- |");
|
|
24
|
-
|
|
25
|
-
Vector2[] points = new Vector2[1_000_000];
|
|
26
|
-
float radius = 500;
|
|
27
|
-
ParallelLoopResult result = Parallel.For(
|
|
28
|
-
0,
|
|
29
|
-
1_000_000,
|
|
30
|
-
index =>
|
|
31
|
-
{
|
|
32
|
-
// ReSharper disable once PossibleLossOfFraction
|
|
33
|
-
points[index] = new Vector2(index % 1_000, index / 1_000);
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
while (!result.IsCompleted)
|
|
38
|
-
{
|
|
39
|
-
yield return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
Stopwatch timer = Stopwatch.StartNew();
|
|
43
|
-
TTree tree = CreateTree(points);
|
|
44
|
-
timer.Stop();
|
|
45
|
-
UnityEngine.Debug.Log(
|
|
46
|
-
$"| Construction (1 million points) | {(int)Math.Floor(1 / timer.Elapsed.TotalSeconds)} ({timer.Elapsed.TotalSeconds} seconds total) |"
|
|
47
|
-
);
|
|
48
|
-
Vector2 center = tree.Boundary.center;
|
|
49
|
-
int count = 0;
|
|
50
|
-
TimeSpan timeout = TimeSpan.FromSeconds(1);
|
|
51
|
-
timer.Restart();
|
|
52
|
-
do
|
|
53
|
-
{
|
|
54
|
-
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
55
|
-
Assert.AreEqual(785456, elementsInRange);
|
|
56
|
-
++count;
|
|
57
|
-
} while (timer.Elapsed < timeout);
|
|
58
|
-
|
|
59
|
-
UnityEngine.Debug.Log(
|
|
60
|
-
$"| Elements In Range - Full | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
radius /= 2f;
|
|
64
|
-
count = 0;
|
|
65
|
-
timer.Restart();
|
|
66
|
-
do
|
|
67
|
-
{
|
|
68
|
-
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
69
|
-
Assert.AreEqual(196364, elementsInRange);
|
|
70
|
-
++count;
|
|
71
|
-
} while (timer.Elapsed < timeout);
|
|
72
|
-
UnityEngine.Debug.Log(
|
|
73
|
-
$"| Elements In Range - Half | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
radius /= 2f;
|
|
77
|
-
count = 0;
|
|
78
|
-
timer.Restart();
|
|
79
|
-
do
|
|
80
|
-
{
|
|
81
|
-
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
82
|
-
Assert.AreEqual(49080, elementsInRange);
|
|
83
|
-
++count;
|
|
84
|
-
} while (timer.Elapsed < timeout);
|
|
85
|
-
UnityEngine.Debug.Log(
|
|
86
|
-
$"| Elements In Range - Quarter | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
radius = 1f;
|
|
90
|
-
count = 0;
|
|
91
|
-
timer.Restart();
|
|
92
|
-
do
|
|
93
|
-
{
|
|
94
|
-
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
95
|
-
Assert.AreEqual(4, elementsInRange);
|
|
96
|
-
++count;
|
|
97
|
-
} while (timer.Elapsed < timeout);
|
|
98
|
-
UnityEngine.Debug.Log(
|
|
99
|
-
$"| Elements In Range - 1 Range | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
int nearestNeighborCount = 500;
|
|
103
|
-
List<Vector2> nearestNeighbors = new();
|
|
104
|
-
count = 0;
|
|
105
|
-
timer.Restart();
|
|
106
|
-
do
|
|
107
|
-
{
|
|
108
|
-
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
109
|
-
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
110
|
-
++count;
|
|
111
|
-
} while (timer.Elapsed < timeout);
|
|
112
|
-
UnityEngine.Debug.Log(
|
|
113
|
-
$"| ANN - 500 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
nearestNeighborCount = 100;
|
|
117
|
-
count = 0;
|
|
118
|
-
timer.Restart();
|
|
119
|
-
do
|
|
120
|
-
{
|
|
121
|
-
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
122
|
-
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
123
|
-
++count;
|
|
124
|
-
} while (timer.Elapsed < timeout);
|
|
125
|
-
UnityEngine.Debug.Log(
|
|
126
|
-
$"| ANN - 100 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
nearestNeighborCount = 10;
|
|
130
|
-
count = 0;
|
|
131
|
-
timer.Restart();
|
|
132
|
-
do
|
|
133
|
-
{
|
|
134
|
-
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
135
|
-
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
136
|
-
++count;
|
|
137
|
-
} while (timer.Elapsed < timeout);
|
|
138
|
-
UnityEngine.Debug.Log(
|
|
139
|
-
$"| ANN - 10 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
nearestNeighborCount = 1;
|
|
143
|
-
count = 0;
|
|
144
|
-
timer.Restart();
|
|
145
|
-
do
|
|
146
|
-
{
|
|
147
|
-
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
148
|
-
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
149
|
-
++count;
|
|
150
|
-
} while (timer.Elapsed < timeout);
|
|
151
|
-
UnityEngine.Debug.Log($"| ANN - 1 | {(int)Math.Floor(count / timeout.TotalSeconds)} |");
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
1
|
+
namespace UnityHelpers.Tests.Performance
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections;
|
|
5
|
+
using System.Collections.Generic;
|
|
6
|
+
using System.Diagnostics;
|
|
7
|
+
using System.Linq;
|
|
8
|
+
using System.Threading.Tasks;
|
|
9
|
+
using Core.DataStructure;
|
|
10
|
+
using NUnit.Framework;
|
|
11
|
+
using UnityEngine;
|
|
12
|
+
using UnityEngine.TestTools;
|
|
13
|
+
|
|
14
|
+
public abstract class SpatialTreePerformanceTest<TTree>
|
|
15
|
+
where TTree : ISpatialTree<Vector2>
|
|
16
|
+
{
|
|
17
|
+
protected abstract TTree CreateTree(IEnumerable<Vector2> points);
|
|
18
|
+
|
|
19
|
+
[UnityTest]
|
|
20
|
+
public IEnumerator Performance()
|
|
21
|
+
{
|
|
22
|
+
UnityEngine.Debug.Log("| Operation | Operations / Second |");
|
|
23
|
+
UnityEngine.Debug.Log("| --------- | ------------------- |");
|
|
24
|
+
|
|
25
|
+
Vector2[] points = new Vector2[1_000_000];
|
|
26
|
+
float radius = 500;
|
|
27
|
+
ParallelLoopResult result = Parallel.For(
|
|
28
|
+
0,
|
|
29
|
+
1_000_000,
|
|
30
|
+
index =>
|
|
31
|
+
{
|
|
32
|
+
// ReSharper disable once PossibleLossOfFraction
|
|
33
|
+
points[index] = new Vector2(index % 1_000, index / 1_000);
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
while (!result.IsCompleted)
|
|
38
|
+
{
|
|
39
|
+
yield return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
Stopwatch timer = Stopwatch.StartNew();
|
|
43
|
+
TTree tree = CreateTree(points);
|
|
44
|
+
timer.Stop();
|
|
45
|
+
UnityEngine.Debug.Log(
|
|
46
|
+
$"| Construction (1 million points) | {(int)Math.Floor(1 / timer.Elapsed.TotalSeconds)} ({timer.Elapsed.TotalSeconds} seconds total) |"
|
|
47
|
+
);
|
|
48
|
+
Vector2 center = tree.Boundary.center;
|
|
49
|
+
int count = 0;
|
|
50
|
+
TimeSpan timeout = TimeSpan.FromSeconds(1);
|
|
51
|
+
timer.Restart();
|
|
52
|
+
do
|
|
53
|
+
{
|
|
54
|
+
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
55
|
+
Assert.AreEqual(785456, elementsInRange);
|
|
56
|
+
++count;
|
|
57
|
+
} while (timer.Elapsed < timeout);
|
|
58
|
+
|
|
59
|
+
UnityEngine.Debug.Log(
|
|
60
|
+
$"| Elements In Range - Full | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
radius /= 2f;
|
|
64
|
+
count = 0;
|
|
65
|
+
timer.Restart();
|
|
66
|
+
do
|
|
67
|
+
{
|
|
68
|
+
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
69
|
+
Assert.AreEqual(196364, elementsInRange);
|
|
70
|
+
++count;
|
|
71
|
+
} while (timer.Elapsed < timeout);
|
|
72
|
+
UnityEngine.Debug.Log(
|
|
73
|
+
$"| Elements In Range - Half | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
radius /= 2f;
|
|
77
|
+
count = 0;
|
|
78
|
+
timer.Restart();
|
|
79
|
+
do
|
|
80
|
+
{
|
|
81
|
+
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
82
|
+
Assert.AreEqual(49080, elementsInRange);
|
|
83
|
+
++count;
|
|
84
|
+
} while (timer.Elapsed < timeout);
|
|
85
|
+
UnityEngine.Debug.Log(
|
|
86
|
+
$"| Elements In Range - Quarter | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
radius = 1f;
|
|
90
|
+
count = 0;
|
|
91
|
+
timer.Restart();
|
|
92
|
+
do
|
|
93
|
+
{
|
|
94
|
+
int elementsInRange = tree.GetElementsInRange(center, radius).Count();
|
|
95
|
+
Assert.AreEqual(4, elementsInRange);
|
|
96
|
+
++count;
|
|
97
|
+
} while (timer.Elapsed < timeout);
|
|
98
|
+
UnityEngine.Debug.Log(
|
|
99
|
+
$"| Elements In Range - 1 Range | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
int nearestNeighborCount = 500;
|
|
103
|
+
List<Vector2> nearestNeighbors = new();
|
|
104
|
+
count = 0;
|
|
105
|
+
timer.Restart();
|
|
106
|
+
do
|
|
107
|
+
{
|
|
108
|
+
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
109
|
+
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
110
|
+
++count;
|
|
111
|
+
} while (timer.Elapsed < timeout);
|
|
112
|
+
UnityEngine.Debug.Log(
|
|
113
|
+
$"| ANN - 500 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
nearestNeighborCount = 100;
|
|
117
|
+
count = 0;
|
|
118
|
+
timer.Restart();
|
|
119
|
+
do
|
|
120
|
+
{
|
|
121
|
+
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
122
|
+
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
123
|
+
++count;
|
|
124
|
+
} while (timer.Elapsed < timeout);
|
|
125
|
+
UnityEngine.Debug.Log(
|
|
126
|
+
$"| ANN - 100 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
nearestNeighborCount = 10;
|
|
130
|
+
count = 0;
|
|
131
|
+
timer.Restart();
|
|
132
|
+
do
|
|
133
|
+
{
|
|
134
|
+
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
135
|
+
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
136
|
+
++count;
|
|
137
|
+
} while (timer.Elapsed < timeout);
|
|
138
|
+
UnityEngine.Debug.Log(
|
|
139
|
+
$"| ANN - 10 | {(int)Math.Floor(count / timeout.TotalSeconds)} |"
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
nearestNeighborCount = 1;
|
|
143
|
+
count = 0;
|
|
144
|
+
timer.Restart();
|
|
145
|
+
do
|
|
146
|
+
{
|
|
147
|
+
tree.GetApproximateNearestNeighbors(center, nearestNeighborCount, nearestNeighbors);
|
|
148
|
+
Assert.IsTrue(nearestNeighbors.Count <= nearestNeighborCount);
|
|
149
|
+
++count;
|
|
150
|
+
} while (timer.Elapsed < timeout);
|
|
151
|
+
UnityEngine.Debug.Log($"| ANN - 1 | {(int)Math.Floor(count / timeout.TotalSeconds)} |");
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|