Use spend_cpu_cycles instead of volatile loop
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user