diff options
author | Billy Donahue <billy.donahue@mongodb.com> | 2021-07-02 16:49:37 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-12-10 21:43:34 +0000 |
commit | 3845b16f0476ef8ea577b8eb09e34f23c76391f0 (patch) | |
tree | 26576a553feaa17fb345bebe555df66fb3138084 /src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc | |
parent | 68aa95b1062bfd64b772836747304d9e3eca1476 (diff) | |
download | mongo-3845b16f0476ef8ea577b8eb09e34f23c76391f0.tar.gz |
SERVER-51476 upgrade to Abseil 20210324.1
(cherry picked from commit defbe4582778e3da3abdc23c73ef7639543ab380)
Diffstat (limited to 'src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc')
-rw-r--r-- | src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc b/src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc index 0ac297c83ad..f38dfcfe5af 100644 --- a/src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc +++ b/src/third_party/abseil-cpp-master/abseil-cpp/absl/strings/str_split_benchmark.cc @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -44,6 +44,29 @@ void BM_Split2StringView(benchmark::State& state) { } BENCHMARK_RANGE(BM_Split2StringView, 0, 1 << 20); +static const absl::string_view kDelimiters = ";:,."; + +std::string MakeMultiDelimiterTestString(int desired_length) { + static const int kAverageValueLen = 25; + std::string test(desired_length * kAverageValueLen, 'x'); + for (int i = 0; i * kAverageValueLen < test.size(); ++i) { + // Cycle through a variety of delimiters. + test[i * kAverageValueLen] = kDelimiters[i % kDelimiters.size()]; + } + return test; +} + +// Measure StrSplit with ByAnyChar with four delimiters to choose from. +void BM_Split2StringViewByAnyChar(benchmark::State& state) { + std::string test = MakeMultiDelimiterTestString(state.range(0)); + for (auto _ : state) { + std::vector<absl::string_view> result = + absl::StrSplit(test, absl::ByAnyChar(kDelimiters)); + benchmark::DoNotOptimize(result); + } +} +BENCHMARK_RANGE(BM_Split2StringViewByAnyChar, 0, 1 << 20); + void BM_Split2StringViewLifted(benchmark::State& state) { std::string test = MakeTestString(state.range(0)); std::vector<absl::string_view> result; @@ -69,7 +92,8 @@ BENCHMARK_RANGE(BM_Split2String, 0, 1 << 20); void BM_Split2SplitStringUsing(benchmark::State& state) { std::string test = MakeTestString(state.range(0)); for (auto _ : state) { - std::vector<std::string> result = absl::StrSplit(test, ';', absl::SkipEmpty()); + std::vector<std::string> result = + absl::StrSplit(test, ';', absl::SkipEmpty()); benchmark::DoNotOptimize(result); } } |