From 493e6aec3169c3ec3b9beffbb836e54e07e69d40 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Thu, 22 May 2025 19:24:14 -0400 Subject: [PATCH] Benchmark different strides --- src/test.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/test.cpp b/src/test.cpp index 9a5b389..a56a29d 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -266,12 +266,22 @@ TEST_CASE("bench3") { ankerl::nanobench::Bench bench; bench.batch(json.size()); bench.unit("byte"); - bench.run("parser3", [&]() { - auto copy = json; - parser3::Parser3 parser(&c, nullptr); - bench.doNotOptimizeAway(parser.parse(copy.data(), copy.length())); - bench.doNotOptimizeAway(parser.parse(nullptr, 0) == WeaselJson_OK); - }); + for (int stride = 1; stride <= json.size(); stride *= 2) { + bench.run("parser3 (stride: " + std::to_string(stride) + ")", [&]() { + auto copy = json; + parser3::Parser3 parser(&c, nullptr); + for (int i = 0; i < copy.size(); i += stride) { + if (parser.parse(copy.data() + i, + std::min(copy.size() - i, stride)) != + WeaselJson_AGAIN) { + abort(); + } + } + if (parser.parse(nullptr, 0) != WeaselJson_OK) { + abort(); + } + }); + } } TEST_CASE("bench4") { @@ -279,7 +289,7 @@ TEST_CASE("bench4") { ankerl::nanobench::Bench bench; bench.batch(json.size()); bench.unit("byte"); - bench.run("parser4", [&]() { + bench.run("simdjson dom", [&]() { simdjson::padded_string my_padded_data(json.data(), json.size()); simdjson::dom::parser parser; auto doc = parser.parse(my_padded_data); @@ -292,7 +302,7 @@ TEST_CASE("bench5") { ankerl::nanobench::Bench bench; bench.batch(json.size()); bench.unit("byte"); - bench.run("parser5", [&]() { + bench.run("simdjson on demand", [&]() { padded_string my_padded_data(json.data(), json.size()); ondemand::parser parser; auto doc = parser.iterate(my_padded_data);