testqbsp: experiment with adding nanobench

This commit is contained in:
Eric Wasylishen 2022-05-04 01:16:29 -06:00
parent 8d6c59a00e
commit 5bf0a8b2c7
5 changed files with 37 additions and 3 deletions

3
.gitmodules vendored
View File

@ -7,3 +7,6 @@
[submodule "3rdparty/json"]
path = 3rdparty/json
url = https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent
[submodule "3rdparty/nanobench"]
path = 3rdparty/nanobench
url = https://github.com/martinus/nanobench

View File

@ -5,4 +5,5 @@ set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
add_subdirectory(googletest EXCLUDE_FROM_ALL)
add_subdirectory(json EXCLUDE_FROM_ALL)
add_subdirectory(json EXCLUDE_FROM_ALL)
add_subdirectory(nanobench EXCLUDE_FROM_ALL)

1
3rdparty/nanobench vendored Submodule

@ -0,0 +1 @@
Subproject commit 26a9c089ca54927c1658c046749ca1b8fd60422c

View File

@ -49,7 +49,7 @@ set(QBSP_TEST_SOURCE
test_qbsp.cc
${CMAKE_BINARY_DIR}/testmaps.hh)
add_executable(testqbsp ${QBSP_TEST_SOURCE})
target_link_libraries (testqbsp libqbsp common ${CMAKE_THREAD_LIBS_INIT} TBB::tbb gtest gmock fmt::fmt)
target_link_libraries (testqbsp libqbsp common ${CMAKE_THREAD_LIBS_INIT} TBB::tbb gtest gmock fmt::fmt nanobench::nanobench)
include(GoogleTest)
gtest_discover_tests(testqbsp)

View File

@ -9,6 +9,8 @@
#include <common/qvec.hh>
#include <testmaps.hh>
#include <nanobench.h>
#include <algorithm>
#include <cstring>
#include <set>
@ -836,4 +838,31 @@ TEST(testmaps_q2, base1)
// visdata 0
// entdata 53623
#endif
}
}
TEST(benchmark, winding) {
ankerl::nanobench::Bench bench;
bench.run("std::vector<double> reserve(3*4*6)", [&] {
std::vector<double> temp;
temp.reserve(3 * 4 * 6);
ankerl::nanobench::doNotOptimizeAway(temp);
});
bench.run("std::vector<qvec3d> reserve(4*6)", [&] {
std::vector<qvec3d> temp;
temp.reserve(4 * 6);
ankerl::nanobench::doNotOptimizeAway(temp);
});
bench.run("std::array<double, 3*4*6>", [&] {
std::array<double, 3 * 4 * 6> temp;
ankerl::nanobench::doNotOptimizeAway(temp);
});
bench.run("std::array<qvec3d, 4*6>", [&] {
std::array<qvec3d, 4 * 6> temp;
ankerl::nanobench::doNotOptimizeAway(temp);
});
bench.run("polylib::winding_base_t<6> construct", [&] {
polylib::winding_base_t<6> temp;
ankerl::nanobench::doNotOptimizeAway(temp);
});
}