Browse Source

MeshTools: add benchmark for boundingBoxAxisAligned()

pull/557/head
Pablo Escobar 4 years ago
parent
commit
5725761ba1
  1. 19
      src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp

19
src/Magnum/MeshTools/Test/BoundingVolumeTest.cpp

@ -49,6 +49,7 @@ struct BoundingVolumeTest: TestSuite::Tester {
void boxAxisAligned(); void boxAxisAligned();
void sphereBouncingBubble(); void sphereBouncingBubble();
void benchmarkBoxAxisAligned();
void benchmarkSphereBouncingBubble(); void benchmarkSphereBouncingBubble();
}; };
@ -56,7 +57,8 @@ BoundingVolumeTest::BoundingVolumeTest() {
addTests({&BoundingVolumeTest::boxAxisAligned, addTests({&BoundingVolumeTest::boxAxisAligned,
&BoundingVolumeTest::sphereBouncingBubble}); &BoundingVolumeTest::sphereBouncingBubble});
addBenchmarks({&BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150); addBenchmarks({&BoundingVolumeTest::benchmarkBoxAxisAligned,
&BoundingVolumeTest::benchmarkSphereBouncingBubble}, 150);
} }
void BoundingVolumeTest::boxAxisAligned() { void BoundingVolumeTest::boxAxisAligned() {
@ -195,6 +197,21 @@ void BoundingVolumeTest::sphereBouncingBubble() {
} }
} }
void BoundingVolumeTest::benchmarkBoxAxisAligned() {
Containers::Array<Vector3> 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() { void BoundingVolumeTest::benchmarkSphereBouncingBubble() {
Containers::Array<Vector3> points{NoInit, 500}; Containers::Array<Vector3> points{NoInit, 500};
for(size_t i = 0; i < points.size(); ++i) { for(size_t i = 0; i < points.size(); ++i) {

Loading…
Cancel
Save