benchmark improvements

This commit is contained in:
mischa 2023-07-24 18:23:39 +08:00
parent 471dfbaf95
commit 54883e5787

View File

@ -28,22 +28,24 @@ public static Bounds MinMax(float min, float max) =>
// simple benchmark to compare some optimizations later. // simple benchmark to compare some optimizations later.
// 64 entries are much more than we would usually use. // 64 entries are much more than we would usually use.
// //
// Unity 2021.3 LTS, release mode, 10_000 x 64: // Unity 2021.3 LTS, release mode, 10_000 x 64 x 8:
// native O(N) implementation: 4067 ms // native O(N) implementation: 1005 ms
[Test] [Test]
[TestCase(10_000, 64)] [TestCase(10_000, 64, 8)]
public void Benchmark(int iterations, int entriesPerIteration) public void Benchmark(int iterations, int insertions, int limit)
{ {
// insert 'entriesPerIteration' bounds 'iterations' times // repeat the test 'iterations' x times
for (int i = 0; i < iterations; ++i) for (int iteration = 0; iteration < iterations; ++iteration)
{ {
// each test captures 'insertions' bounds,
// with a history of 'limit' bounds.
history.Clear(); history.Clear();
for (int j = 0; j < entriesPerIteration; ++j) for (int i = 0; i < insertions; ++i)
{ {
float min = Random.Range(-1, 1); float min = Random.Range(-1, 1);
float max = Random.Range(min, 1); float max = Random.Range(min, 1);
Bounds bounds = MinMax(min, max); Bounds bounds = MinMax(min, max);
Bounds total = HistoryBounds.Insert(history, entriesPerIteration, bounds); Bounds total = HistoryBounds.Insert(history, limit, bounds);
} }
} }
} }