merge(3p/absl): subtree merge of Abseil up to e19260f
... notably, this includes Abseil's own StatusOr type, which conflicted with our implementation (that was taken from TensorFlow). Change-Id: Ie7d6764b64055caaeb8dc7b6b9d066291e6b538f
This commit is contained in:
parent
cc27324d02
commit
082c006c04
854 changed files with 11260 additions and 5296 deletions
|
|
@ -137,4 +137,51 @@ 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue