Measure time more accurately

This commit is contained in:
John Keiser 2021-01-05 10:45:49 -08:00
parent cfff8a5ed5
commit dcd2e13aec
22 changed files with 33 additions and 32 deletions

View File

@ -43,7 +43,7 @@ struct rapidjson : public rapidjson_base {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag>(json.data()), ids);
}
};
BENCHMARK_TEMPLATE(distinct_user_id, rapidjson);
BENCHMARK_TEMPLATE(distinct_user_id, rapidjson)->UseManualTime();
struct rapidjson_insitu : public rapidjson_base {
bool run(const padded_string &json, std::vector<uint64_t> &ids) {
@ -51,7 +51,7 @@ struct rapidjson_insitu : public rapidjson_base {
return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json_copy.data()), ids);
}
};
BENCHMARK_TEMPLATE(distinct_user_id, rapidjson_insitu);
BENCHMARK_TEMPLATE(distinct_user_id, rapidjson_insitu)->UseManualTime();
} // namespace partial_tweets

View File

@ -29,7 +29,7 @@ struct simdjson_dom {
}
};
BENCHMARK_TEMPLATE(distinct_user_id, simdjson_dom);
BENCHMARK_TEMPLATE(distinct_user_id, simdjson_dom)->UseManualTime();
} // namespace distinct_user_id

View File

@ -31,7 +31,7 @@ struct simdjson_ondemand {
}
};
BENCHMARK_TEMPLATE(distinct_user_id, simdjson_ondemand);
BENCHMARK_TEMPLATE(distinct_user_id, simdjson_ondemand)->UseManualTime();
} // namespace distinct_user_id

View File

@ -43,7 +43,7 @@ struct yyjson {
};
BENCHMARK_TEMPLATE(distinct_user_id, yyjson);
BENCHMARK_TEMPLATE(distinct_user_id, yyjson)->UseManualTime();
} // namespace distinct_user_id

View File

@ -36,7 +36,7 @@ struct rapidjson : public rapidjson_base {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag>(json.data()), find_id, text);
}
};
BENCHMARK_TEMPLATE(find_tweet, rapidjson);
BENCHMARK_TEMPLATE(find_tweet, rapidjson)->UseManualTime();
struct rapidjson_insitu : public rapidjson_base {
bool run(const padded_string &json, uint64_t find_id, std::string_view &text) {
@ -44,7 +44,7 @@ struct rapidjson_insitu : public rapidjson_base {
return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json_copy.data()), find_id, text);
}
};
BENCHMARK_TEMPLATE(find_tweet, rapidjson_insitu);
BENCHMARK_TEMPLATE(find_tweet, rapidjson_insitu)->UseManualTime();
} // namespace partial_tweets

View File

@ -24,7 +24,7 @@ struct simdjson_dom {
}
};
BENCHMARK_TEMPLATE(find_tweet, simdjson_dom);
BENCHMARK_TEMPLATE(find_tweet, simdjson_dom)->UseManualTime();
} // namespace find_tweet

View File

@ -25,7 +25,7 @@ struct simdjson_ondemand {
}
};
BENCHMARK_TEMPLATE(find_tweet, simdjson_ondemand);
BENCHMARK_TEMPLATE(find_tweet, simdjson_ondemand)->UseManualTime();
} // namespace find_tweet

View File

@ -33,7 +33,7 @@ struct yyjson {
}
};
BENCHMARK_TEMPLATE(find_tweet, yyjson);
BENCHMARK_TEMPLATE(find_tweet, yyjson)->UseManualTime();
} // namespace find_tweet

View File

@ -37,7 +37,9 @@ template<typename B, typename R> static void run_json_benchmark(benchmark::State
if (!bench.before_run(state)) { state.SkipWithError("before_run failed"); };
collector.start();
if (!bench.run(state)) { state.SkipWithError("run failed"); return; }
events << collector.end();
auto event = collector.end();
events << event;
state.SetIterationTime(event.elapsed_sec());
if (!bench.after_run(state)) { state.SkipWithError("after_run failed"); return; };
}

View File

@ -38,14 +38,14 @@ struct rapidjson : public rapidjson_base {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag>(json.data()), points);
}
};
BENCHMARK_TEMPLATE(kostya, rapidjson);
BENCHMARK_TEMPLATE(kostya, rapidjson)->UseManualTime();
struct rapidjson_lossless : public rapidjson_base {
bool run(const padded_string &json, std::vector<point> &points) {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag | kParseFullPrecisionFlag>(json.data()), points);
}
};
BENCHMARK_TEMPLATE(kostya, rapidjson_lossless);
BENCHMARK_TEMPLATE(kostya, rapidjson_lossless)->UseManualTime();
struct rapidjson_insitu : public rapidjson_base {
bool run(const padded_string &json, std::vector<point> &points) {
@ -53,7 +53,7 @@ struct rapidjson_insitu : public rapidjson_base {
return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json_copy.data()), points);
}
};
BENCHMARK_TEMPLATE(kostya, rapidjson_insitu);
BENCHMARK_TEMPLATE(kostya, rapidjson_insitu)->UseManualTime();
} // namespace kostya

View File

@ -19,7 +19,7 @@ struct simdjson_dom {
}
};
BENCHMARK_TEMPLATE(kostya, simdjson_dom);
BENCHMARK_TEMPLATE(kostya, simdjson_dom)->UseManualTime();
} // namespace kostya

View File

@ -21,7 +21,7 @@ struct simdjson_ondemand {
}
};
BENCHMARK_TEMPLATE(kostya, simdjson_ondemand);
BENCHMARK_TEMPLATE(kostya, simdjson_ondemand)->UseManualTime();
} // namespace kostya

View File

@ -44,7 +44,7 @@ struct yyjson {
};
BENCHMARK_TEMPLATE(kostya, yyjson);
BENCHMARK_TEMPLATE(kostya, yyjson)->UseManualTime();
} // namespace kostya

View File

@ -35,14 +35,14 @@ struct rapidjson : public rapidjson_base {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag>(json.data()), points);
}
};
BENCHMARK_TEMPLATE(large_random, rapidjson);
BENCHMARK_TEMPLATE(large_random, rapidjson)->UseManualTime();
struct rapidjson_lossless : public rapidjson_base {
bool run(const simdjson::padded_string &json, std::vector<point> &points) {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag | kParseFullPrecisionFlag>(json.data()), points);
}
};
BENCHMARK_TEMPLATE(large_random, rapidjson_lossless);
BENCHMARK_TEMPLATE(large_random, rapidjson_lossless)->UseManualTime();
struct rapidjson_insitu : public rapidjson_base {
bool run(const simdjson::padded_string &json, std::vector<point> &points) {
@ -50,7 +50,7 @@ struct rapidjson_insitu : public rapidjson_base {
return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json_copy.data()), points);
}
};
BENCHMARK_TEMPLATE(large_random, rapidjson_insitu);
BENCHMARK_TEMPLATE(large_random, rapidjson_insitu)->UseManualTime();
} // namespace large_random

View File

@ -19,7 +19,7 @@ struct simdjson_dom {
}
};
BENCHMARK_TEMPLATE(large_random, simdjson_dom);
BENCHMARK_TEMPLATE(large_random, simdjson_dom)->UseManualTime();
} // namespace large_random

View File

@ -21,7 +21,7 @@ struct simdjson_ondemand {
}
};
BENCHMARK_TEMPLATE(large_random, simdjson_ondemand);
BENCHMARK_TEMPLATE(large_random, simdjson_ondemand)->UseManualTime();
} // namespace large_random

View File

@ -21,7 +21,7 @@ struct simdjson_ondemand_unordered {
}
};
BENCHMARK_TEMPLATE(large_random, simdjson_ondemand_unordered);
BENCHMARK_TEMPLATE(large_random, simdjson_ondemand_unordered)->UseManualTime();
} // namespace large_random

View File

@ -41,7 +41,7 @@ struct yyjson {
}
};
BENCHMARK_TEMPLATE(large_random, yyjson);
BENCHMARK_TEMPLATE(large_random, yyjson)->UseManualTime();
} // namespace large_random

View File

@ -64,16 +64,15 @@ struct rapidjson : public rapidjson_base {
return rapidjson_base::run(doc.Parse<kParseValidateEncodingFlag>(json.data()), tweets);
}
};
BENCHMARK_TEMPLATE(partial_tweets, rapidjson);
BENCHMARK_TEMPLATE(partial_tweets, rapidjson)->UseManualTime();
// TODO this fails!
// struct rapidjson_insitu : public rapidjson_base {
// bool run(const padded_string &json, std::vector<tweet> &tweets) {
// padded_string json_copy{json.data(), json.size()};
// return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json_copy.data()), tweets);
// bool run(simdjson::padded_string &json, std::vector<tweet> &tweets) {
// return rapidjson_base::run(doc.ParseInsitu<kParseValidateEncodingFlag>(json.data()), tweets);
// }
// };
// BENCHMARK_TEMPLATE(partial_tweets, rapidjson_insitu);
// BENCHMARK_TEMPLATE(partial_tweets, rapidjson_insitu)->UseManualTime();
} // namespace partial_tweets

View File

@ -34,7 +34,7 @@ struct simdjson_dom {
}
};
BENCHMARK_TEMPLATE(partial_tweets, simdjson_dom);
BENCHMARK_TEMPLATE(partial_tweets, simdjson_dom)->UseManualTime();
} // namespace partial_tweets

View File

@ -40,7 +40,7 @@ struct simdjson_ondemand {
}
};
BENCHMARK_TEMPLATE(partial_tweets, simdjson_ondemand);
BENCHMARK_TEMPLATE(partial_tweets, simdjson_ondemand)->UseManualTime();
} // namespace partial_tweets

View File

@ -59,7 +59,7 @@ struct yyjson {
}
};
BENCHMARK_TEMPLATE(partial_tweets, yyjson);
BENCHMARK_TEMPLATE(partial_tweets, yyjson)->UseManualTime();
} // namespace partial_tweets