From 5725761ba1115ca7b4739d4559be07b3fe2d94cf Mon Sep 17 00:00:00 2001 From: Pablo Escobar Date: Wed, 6 Apr 2022 19:15:05 +0200 Subject: [PATCH] MeshTools: add benchmark for boundingBoxAxisAligned() --- .../MeshTools/Test/BoundingVolumeTest.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp b/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp index 5c836cb19..a50824429 100644 --- a/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp +++ b/src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp @@ -49,6 +49,7 @@ struct BoundingVolumeTest: TestSuite::Tester { void boxAxisAligned(); void sphereBouncingBubble(); + void benchmarkBoxAxisAligned(); void benchmarkSphereBouncingBubble(); }; @@ -56,7 +57,8 @@ BoundingVolumeTest::BoundingVolumeTest() { addTests({&BoundingVolumeTest::boxAxisAligned, &BoundingVolumeTest::sphereBouncingBubble}); - addBenchmarks({&BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150); + addBenchmarks({&BoundingVolumeTest::benchmarkBoxAxisAligned, + &BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150); } void BoundingVolumeTest::boxAxisAligned() { @@ -195,6 +197,21 @@ void BoundingVolumeTest::sphereBouncingBubble() { } } +void BoundingVolumeTest::benchmarkBoxAxisAligned() { + Containers::Array points{NoInit, 500}; + for(size_t i = 0; i < points.size(); ++i) { + points[i] = Vector3{Float(i)*0.01f}; + } + + Float r = 0.0f; + CORRADE_BENCHMARK(50) { + const Range3D box = MeshTools::boundingBoxAxisAligned(points); + r += box.size().x(); + } + + CORRADE_COMPARE_AS(r, 1.0f, TestSuite::Compare::Greater); +} + void BoundingVolumeTest::benchmarkSphereBouncingBubble() { Containers::Array points{NoInit, 500}; for(size_t i = 0; i < points.size(); ++i) {