diff --git a/CMakeLists.txt b/CMakeLists.txt index a8e5096..5404f5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,7 +233,8 @@ target_link_libraries(bench_parser_comparison nanobench_impl weaseldb_sources target_include_directories(bench_parser_comparison PRIVATE ${rapidjson_SOURCE_DIR}/include) -add_executable(bench_thread_pipeline benchmarks/bench_thread_pipeline.cpp) +add_executable(bench_thread_pipeline benchmarks/bench_thread_pipeline.cpp + src/cpu_work.cpp) target_link_libraries(bench_thread_pipeline nanobench_impl Threads::Threads) target_include_directories(bench_thread_pipeline PRIVATE src) diff --git a/benchmarks/bench_thread_pipeline.cpp b/benchmarks/bench_thread_pipeline.cpp index fcffae8..e9ba307 100644 --- a/benchmarks/bench_thread_pipeline.cpp +++ b/benchmarks/bench_thread_pipeline.cpp @@ -1,3 +1,4 @@ +#include "cpu_work.hpp" #include "thread_pipeline.hpp" #include @@ -19,8 +20,7 @@ int main() { .warmup(100); bench.run("Zero stage pipeline", [&] { for (int i = 0; i < NUM_ITEMS; ++i) { - for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { - } + spend_cpu_cycles(BUSY_ITERS); } }); @@ -35,8 +35,7 @@ int main() { auto guard = pipeline.acquire<0, 0>(); for (auto &item : guard.batch) { - for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { - } + spend_cpu_cycles(BUSY_ITERS); if (item == &done) { return; } @@ -101,8 +100,7 @@ int main() { auto guard = pipeline.acquire<0, 0>(); for (auto &item : guard.batch) { - for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { - } + spend_cpu_cycles(BUSY_ITERS); if (item == &done) { return; } @@ -164,8 +162,7 @@ int main() { for (;;) { auto guard = pipeline.template acquire<0, 0>(); for (auto &item : guard.batch) { - for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { - } + spend_cpu_cycles(BUSY_ITERS); if (item == &done) return; } @@ -177,8 +174,7 @@ int main() { for (;;) { auto guard = pipeline.template acquire<1, 0>(); for (auto &item : guard.batch) { - for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { - } + spend_cpu_cycles(BUSY_ITERS); if (item == &done) return; if (item)