diff options
author | Abseil Team <absl-team@google.com> | 2019-08-05 11:32:04 -0700 |
---|---|---|
committer | vslashg <gfalcon@google.com> | 2019-08-05 15:42:34 -0400 |
commit | c5c4db4f5191fe5e76cbf68dcc71fb28702f7d2b (patch) | |
tree | a5f5c13c9a239ac01d0f7b5280e71d1b2a641307 /absl/strings | |
parent | 14550beb3b7b97195e483fb74b5efb906395c31e (diff) |
Export of internal Abseil changes
--
f8fe0f483378c7520d8f8bdfabe4b20de4d96c7e by Andy Soffer <asoffer@google.com>:
Ensure that Invoke can support C++17 in the sense that noexcept is part of the type.
PiperOrigin-RevId: 261730155
--
bf796ab71653a80498f9374bc8c5111d065c64ba by Abseil Team <absl-team@google.com>:
Fix typo in static_assert message for copy/move constructible by replacing "by" with "be".
PiperOrigin-RevId: 261713992
--
8c7c17c40d03a322f304a2fd73ed34462dbf265a by Andy Soffer <asoffer@google.com>:
Add absl::is_function drop-in replacement for std::is_function. Some standard
libraries incorrectly implement std::is_function in a few corner cases. In
particular, libstdc++ functions marked noexcept.
The trick being used here is that function types decay to pointers. After
excluding cases like is_class, etc, we can distinguish function types by
testing for this decay.
Many thanks to ericwf@ for essentially writing this CL.
PiperOrigin-RevId: 261705008
--
c5adf42d0a132c2525d17a719329eab2ffe0aa94 by Abseil Team <absl-team@google.com>:
Add microbenchmark for StrSplit that uses delimiter ByAnyChar.
PiperOrigin-RevId: 261424010
--
66a342f9381ec56be2fe3aa5b3193dd3538a9740 by Andy Soffer <asoffer@google.com>:
CMake support for Abseil Random
This change touches almost build-related files for CMake almost exclusively. The one minor exception is random/internal/salted_seed_seq.h. The default warnings configuration for one of our CI builds requests not having named but unused parameters. The change in this file cleans up that warning.
PiperOrigin-RevId: 261192369
GitOrigin-RevId: f8fe0f483378c7520d8f8bdfabe4b20de4d96c7e
Change-Id: I05f662baacfe78750651535aa658f61c2327bc44
Diffstat (limited to 'absl/strings')
-rw-r--r-- | absl/strings/str_split_benchmark.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/absl/strings/str_split_benchmark.cc b/absl/strings/str_split_benchmark.cc index 28c25e8d..f38dfcfe 100644 --- a/absl/strings/str_split_benchmark.cc +++ b/absl/strings/str_split_benchmark.cc @@ -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; |