Use spend_cpu_cycles instead of volatile loop

This commit is contained in:
2025-09-15 14:07:38 -04:00
parent 528a467518
commit 9120c05847
2 changed files with 8 additions and 11 deletions

View File

@@ -233,7 +233,8 @@ target_link_libraries(bench_parser_comparison nanobench_impl weaseldb_sources
target_include_directories(bench_parser_comparison target_include_directories(bench_parser_comparison
PRIVATE ${rapidjson_SOURCE_DIR}/include) 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_link_libraries(bench_thread_pipeline nanobench_impl Threads::Threads)
target_include_directories(bench_thread_pipeline PRIVATE src) target_include_directories(bench_thread_pipeline PRIVATE src)

View File

@@ -1,3 +1,4 @@
#include "cpu_work.hpp"
#include "thread_pipeline.hpp" #include "thread_pipeline.hpp"
#include <latch> #include <latch>
@@ -19,8 +20,7 @@ int main() {
.warmup(100); .warmup(100);
bench.run("Zero stage pipeline", [&] { bench.run("Zero stage pipeline", [&] {
for (int i = 0; i < NUM_ITEMS; ++i) { 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>(); auto guard = pipeline.acquire<0, 0>();
for (auto &item : guard.batch) { for (auto &item : guard.batch) {
for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { spend_cpu_cycles(BUSY_ITERS);
}
if (item == &done) { if (item == &done) {
return; return;
} }
@@ -101,8 +100,7 @@ int main() {
auto guard = pipeline.acquire<0, 0>(); auto guard = pipeline.acquire<0, 0>();
for (auto &item : guard.batch) { for (auto &item : guard.batch) {
for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { spend_cpu_cycles(BUSY_ITERS);
}
if (item == &done) { if (item == &done) {
return; return;
} }
@@ -164,8 +162,7 @@ int main() {
for (;;) { for (;;) {
auto guard = pipeline.template acquire<0, 0>(); auto guard = pipeline.template acquire<0, 0>();
for (auto &item : guard.batch) { for (auto &item : guard.batch) {
for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { spend_cpu_cycles(BUSY_ITERS);
}
if (item == &done) if (item == &done)
return; return;
} }
@@ -177,8 +174,7 @@ int main() {
for (;;) { for (;;) {
auto guard = pipeline.template acquire<1, 0>(); auto guard = pipeline.template acquire<1, 0>();
for (auto &item : guard.batch) { for (auto &item : guard.batch) {
for (volatile int i = 0; i < BUSY_ITERS; i = i + 1) { spend_cpu_cycles(BUSY_ITERS);
}
if (item == &done) if (item == &done)
return; return;
if (item) if (item)