diff --git a/benchmark/distinct_user_id/rapidjson.h b/benchmark/distinct_user_id/rapidjson.h index 98219684..25f47dea 100644 --- a/benchmark/distinct_user_id/rapidjson.h +++ b/benchmark/distinct_user_id/rapidjson.h @@ -43,9 +43,16 @@ struct rapidjson : public rapidjson_base { return rapidjson_base::run(doc.Parse(json.data()), ids); } }; - BENCHMARK_TEMPLATE(distinct_user_id, rapidjson); +struct rapidjson_insitu : public rapidjson_base { + bool run(const padded_string &json, std::vector &ids) { + padded_string json_copy{json.data(), json.size()}; + return rapidjson_base::run(doc.ParseInsitu(json_copy.data()), ids); + } +}; +BENCHMARK_TEMPLATE(distinct_user_id, rapidjson_insitu); + } // namespace partial_tweets #endif // SIMDJSON_COMPETITION_RAPIDJSON diff --git a/benchmark/find_tweet/rapidjson.h b/benchmark/find_tweet/rapidjson.h index c50f6d35..f6d73ab8 100644 --- a/benchmark/find_tweet/rapidjson.h +++ b/benchmark/find_tweet/rapidjson.h @@ -38,6 +38,14 @@ struct rapidjson : public rapidjson_base { }; BENCHMARK_TEMPLATE(find_tweet, rapidjson); +struct rapidjson_insitu : public rapidjson_base { + bool run(const padded_string &json, uint64_t find_id, std::string_view &text) { + padded_string json_copy{json.data(), json.size()}; + return rapidjson_base::run(doc.ParseInsitu(json_copy.data()), find_id, text); + } +}; +BENCHMARK_TEMPLATE(find_tweet, rapidjson_insitu); + } // namespace partial_tweets #endif // SIMDJSON_COMPETITION_RAPIDJSON diff --git a/benchmark/kostya/rapidjson.h b/benchmark/kostya/rapidjson.h index fc41397d..57ab314f 100644 --- a/benchmark/kostya/rapidjson.h +++ b/benchmark/kostya/rapidjson.h @@ -38,16 +38,23 @@ struct rapidjson : public rapidjson_base { return rapidjson_base::run(doc.Parse(json.data()), points); } }; +BENCHMARK_TEMPLATE(kostya, rapidjson); struct rapidjson_lossless : public rapidjson_base { bool run(const padded_string &json, std::vector &points) { return rapidjson_base::run(doc.Parse(json.data()), points); } }; - -BENCHMARK_TEMPLATE(kostya, rapidjson); BENCHMARK_TEMPLATE(kostya, rapidjson_lossless); +struct rapidjson_insitu : public rapidjson_base { + bool run(const padded_string &json, std::vector &points) { + padded_string json_copy{json.data(), json.size()}; + return rapidjson_base::run(doc.ParseInsitu(json_copy.data()), points); + } +}; +BENCHMARK_TEMPLATE(kostya, rapidjson_insitu); + } // namespace kostya #endif // SIMDJSON_COMPETITION_RAPIDJSON diff --git a/benchmark/large_random/rapidjson.h b/benchmark/large_random/rapidjson.h index d9a913e0..2a2d4694 100644 --- a/benchmark/large_random/rapidjson.h +++ b/benchmark/large_random/rapidjson.h @@ -35,16 +35,24 @@ struct rapidjson : public rapidjson_base { return rapidjson_base::run(doc.Parse(json.data()), points); } }; +BENCHMARK_TEMPLATE(large_random, rapidjson); struct rapidjson_lossless : public rapidjson_base { bool run(const simdjson::padded_string &json, std::vector &points) { return rapidjson_base::run(doc.Parse(json.data()), points); } }; - -BENCHMARK_TEMPLATE(large_random, rapidjson); BENCHMARK_TEMPLATE(large_random, rapidjson_lossless); +struct rapidjson_insitu : public rapidjson_base { + bool run(const simdjson::padded_string &json, std::vector &points) { + padded_string json_copy{json.data(), json.size()}; + return rapidjson_base::run(doc.ParseInsitu(json_copy.data()), points); + } +}; +BENCHMARK_TEMPLATE(large_random, rapidjson_insitu); + + } // namespace large_random #endif // SIMDJSON_COMPETITION_RAPIDJSON diff --git a/benchmark/partial_tweets/rapidjson.h b/benchmark/partial_tweets/rapidjson.h index b5835ad2..b0862de8 100644 --- a/benchmark/partial_tweets/rapidjson.h +++ b/benchmark/partial_tweets/rapidjson.h @@ -64,9 +64,17 @@ struct rapidjson : public rapidjson_base { return rapidjson_base::run(doc.Parse(json.data()), tweets); } }; - BENCHMARK_TEMPLATE(partial_tweets, rapidjson); +// TODO this fails! +// struct rapidjson_insitu : public rapidjson_base { +// bool run(const padded_string &json, std::vector &tweets) { +// padded_string json_copy{json.data(), json.size()}; +// return rapidjson_base::run(doc.ParseInsitu(json_copy.data()), tweets); +// } +// }; +// BENCHMARK_TEMPLATE(partial_tweets, rapidjson_insitu); + } // namespace partial_tweets #endif // SIMDJSON_COMPETITION_RAPIDJSON