aboutsummaryrefslogtreecommitdiff
path: root/third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc')
-rw-r--r--third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc49
1 files changed, 1 insertions, 48 deletions
diff --git a/third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc b/third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc
index 02c4dbe6d8..14c63b3fc9 100644
--- a/third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc
+++ b/third_party/abseil-cpp/absl/strings/str_cat_benchmark.cc
@@ -23,7 +23,7 @@
namespace {
const char kStringOne[] = "Once Upon A Time, ";
-const char kStringTwo[] = "There was a string benchmark";
+const char kStringTwo[] = "There was a std::string benchmark";
// We want to include negative numbers in the benchmark, so this function
// is used to count 0, 1, -1, 2, -2, 3, -3, ...
@@ -137,51 +137,4 @@ void BM_DoubleToString_By_SixDigits(benchmark::State& state) {
}
BENCHMARK(BM_DoubleToString_By_SixDigits);
-template <typename... Chunks>
-void BM_StrAppendImpl(benchmark::State& state, size_t total_bytes,
- Chunks... chunks) {
- for (auto s : state) {
- std::string result;
- while (result.size() < total_bytes) {
- absl::StrAppend(&result, chunks...);
- benchmark::DoNotOptimize(result);
- }
- }
-}
-
-void BM_StrAppend(benchmark::State& state) {
- const int total_bytes = state.range(0);
- const int chunks_at_a_time = state.range(1);
- const absl::string_view kChunk = "0123456789";
-
- switch (chunks_at_a_time) {
- case 1:
- return BM_StrAppendImpl(state, total_bytes, kChunk);
- case 2:
- return BM_StrAppendImpl(state, total_bytes, kChunk, kChunk);
- case 4:
- return BM_StrAppendImpl(state, total_bytes, kChunk, kChunk, kChunk,
- kChunk);
- case 8:
- return BM_StrAppendImpl(state, total_bytes, kChunk, kChunk, kChunk,
- kChunk, kChunk, kChunk, kChunk, kChunk);
- default:
- std::abort();
- }
-}
-
-template <typename B>
-void StrAppendConfig(B* benchmark) {
- for (int bytes : {10, 100, 1000, 10000}) {
- for (int chunks : {1, 2, 4, 8}) {
- // Only add the ones that divide properly. Otherwise we are over counting.
- if (bytes % (10 * chunks) == 0) {
- benchmark->Args({bytes, chunks});
- }
- }
- }
-}
-
-BENCHMARK(BM_StrAppend)->Apply(StrAppendConfig);
-
} // namespace