15 #include "absl/strings/str_split.h"
19 #include <unordered_map>
20 #include <unordered_set>
23 #include "benchmark/benchmark.h"
24 #include "absl/base/internal/raw_logging.h"
25 #include "absl/strings/string_view.h"
30 static const int kAverageValueLen = 25;
32 for (
int i = 1;
i <
test.size();
i += kAverageValueLen) {
49 std::string MakeMultiDelimiterTestString(
int desired_length) {
50 static const int kAverageValueLen = 25;
52 for (
int i = 0;
i * kAverageValueLen <
test.size(); ++
i) {
54 test[
i * kAverageValueLen] = kDelimiters[
i % kDelimiters.
size()];
63 std::vector<absl::string_view>
result =
72 std::vector<absl::string_view>
result;
95 std::vector<std::string>
result =
105 for (
int i = 1;
i <
len;
i += 2) {
109 std::unordered_set<std::string>
result =
119 for (
int i = 1;
i <
len;
i += 2) {
123 std::unordered_map<std::string, std::string>
result =
133 for (
int i = 1;
i <
len;
i += 2) {
143 struct OneCharLiteral {
144 char operator()()
const {
return 'X'; }
147 struct OneCharStringLiteral {
148 const char* operator()()
const {
return "X"; }
151 template <
typename DelimiterFactory>
153 const auto delimiter = DelimiterFactory()();
154 std::vector<absl::string_view> pieces;
157 pieces =
absl::StrSplit(
"The quick brown fox jumps over the lazy dog",
166 template <
typename DelimiterFactory>
168 const auto delimiter = DelimiterFactory()();
172 "The quick brown fox jumps over the lazy dog", delimiter);
173 v += std::distance(splitter.begin(), splitter.end());