diff --git a/.gitmodules b/.gitmodules index 9e6d12d8..1fd0d4d3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 3f9ab1ab..323b4ef0 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -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) \ No newline at end of file +add_subdirectory(json EXCLUDE_FROM_ALL) +add_subdirectory(nanobench EXCLUDE_FROM_ALL) diff --git a/3rdparty/nanobench b/3rdparty/nanobench new file mode 160000 index 00000000..26a9c089 --- /dev/null +++ b/3rdparty/nanobench @@ -0,0 +1 @@ +Subproject commit 26a9c089ca54927c1658c046749ca1b8fd60422c diff --git a/qbsp/CMakeLists.txt b/qbsp/CMakeLists.txt index c7d267fd..5479ef54 100644 --- a/qbsp/CMakeLists.txt +++ b/qbsp/CMakeLists.txt @@ -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) diff --git a/qbsp/test_qbsp.cc b/qbsp/test_qbsp.cc index 823931a2..b89971df 100644 --- a/qbsp/test_qbsp.cc +++ b/qbsp/test_qbsp.cc @@ -9,6 +9,8 @@ #include #include +#include + #include #include #include @@ -836,4 +838,31 @@ TEST(testmaps_q2, base1) // visdata 0 // entdata 53623 #endif -} \ No newline at end of file +} + +TEST(benchmark, winding) { + ankerl::nanobench::Bench bench; + + bench.run("std::vector reserve(3*4*6)", [&] { + std::vector temp; + temp.reserve(3 * 4 * 6); + ankerl::nanobench::doNotOptimizeAway(temp); + }); + bench.run("std::vector reserve(4*6)", [&] { + std::vector temp; + temp.reserve(4 * 6); + ankerl::nanobench::doNotOptimizeAway(temp); + }); + bench.run("std::array", [&] { + std::array temp; + ankerl::nanobench::doNotOptimizeAway(temp); + }); + bench.run("std::array", [&] { + std::array temp; + ankerl::nanobench::doNotOptimizeAway(temp); + }); + bench.run("polylib::winding_base_t<6> construct", [&] { + polylib::winding_base_t<6> temp; + ankerl::nanobench::doNotOptimizeAway(temp); + }); +}