Benchmark different strides
This commit is contained in:
26
src/test.cpp
26
src/test.cpp
@@ -266,12 +266,22 @@ TEST_CASE("bench3") {
|
|||||||
ankerl::nanobench::Bench bench;
|
ankerl::nanobench::Bench bench;
|
||||||
bench.batch(json.size());
|
bench.batch(json.size());
|
||||||
bench.unit("byte");
|
bench.unit("byte");
|
||||||
bench.run("parser3", [&]() {
|
for (int stride = 1; stride <= json.size(); stride *= 2) {
|
||||||
auto copy = json;
|
bench.run("parser3 (stride: " + std::to_string(stride) + ")", [&]() {
|
||||||
parser3::Parser3 parser(&c, nullptr);
|
auto copy = json;
|
||||||
bench.doNotOptimizeAway(parser.parse(copy.data(), copy.length()));
|
parser3::Parser3 parser(&c, nullptr);
|
||||||
bench.doNotOptimizeAway(parser.parse(nullptr, 0) == WeaselJson_OK);
|
for (int i = 0; i < copy.size(); i += stride) {
|
||||||
});
|
if (parser.parse(copy.data() + i,
|
||||||
|
std::min<int>(copy.size() - i, stride)) !=
|
||||||
|
WeaselJson_AGAIN) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (parser.parse(nullptr, 0) != WeaselJson_OK) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("bench4") {
|
TEST_CASE("bench4") {
|
||||||
@@ -279,7 +289,7 @@ TEST_CASE("bench4") {
|
|||||||
ankerl::nanobench::Bench bench;
|
ankerl::nanobench::Bench bench;
|
||||||
bench.batch(json.size());
|
bench.batch(json.size());
|
||||||
bench.unit("byte");
|
bench.unit("byte");
|
||||||
bench.run("parser4", [&]() {
|
bench.run("simdjson dom", [&]() {
|
||||||
simdjson::padded_string my_padded_data(json.data(), json.size());
|
simdjson::padded_string my_padded_data(json.data(), json.size());
|
||||||
simdjson::dom::parser parser;
|
simdjson::dom::parser parser;
|
||||||
auto doc = parser.parse(my_padded_data);
|
auto doc = parser.parse(my_padded_data);
|
||||||
@@ -292,7 +302,7 @@ TEST_CASE("bench5") {
|
|||||||
ankerl::nanobench::Bench bench;
|
ankerl::nanobench::Bench bench;
|
||||||
bench.batch(json.size());
|
bench.batch(json.size());
|
||||||
bench.unit("byte");
|
bench.unit("byte");
|
||||||
bench.run("parser5", [&]() {
|
bench.run("simdjson on demand", [&]() {
|
||||||
padded_string my_padded_data(json.data(), json.size());
|
padded_string my_padded_data(json.data(), json.size());
|
||||||
ondemand::parser parser;
|
ondemand::parser parser;
|
||||||
auto doc = parser.iterate(my_padded_data);
|
auto doc = parser.iterate(my_padded_data);
|
||||||
|
|||||||
Reference in New Issue
Block a user