diff options
author | Haibo Huang <hhb@google.com> | 2018-08-21 12:55:37 -0700 |
---|---|---|
committer | Haibo Huang <hhb@google.com> | 2018-08-21 21:04:43 +0000 |
commit | e466cc0d5548472e6e78c9994e3c2c982157b549 (patch) | |
tree | 00b4ee9139f27133c49e141813983c620f161cca /benchmarks/string_benchmark.cpp | |
parent | d1214b0c688906d2a97c29fa1700723f31b51eb8 (diff) |
Add benchmark for strncmp
Test: run benchmark
Change-Id: Id99d81fe4d2a72a7f22414c7eea3ef3d873022ab
Diffstat (limited to 'benchmarks/string_benchmark.cpp')
-rw-r--r-- | benchmarks/string_benchmark.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp index 38122f2ed..d1766758c 100644 --- a/benchmarks/string_benchmark.cpp +++ b/benchmarks/string_benchmark.cpp @@ -248,6 +248,25 @@ static void BM_string_strcmp(benchmark::State& state) { } BIONIC_BENCHMARK_WITH_ARG(BM_string_strcmp, "AT_ALIGNED_TWOBUF"); +static void BM_string_strncmp(benchmark::State& state) { + const size_t nbytes = state.range(0); + const size_t s1_alignment = state.range(1); + const size_t s2_alignment = state.range(2); + + std::vector<char> s1; + std::vector<char> s2; + char* s1_aligned = GetAlignedPtrFilled(&s1, s1_alignment, nbytes, 'x'); + char* s2_aligned = GetAlignedPtrFilled(&s2, s2_alignment, nbytes, 'x'); + + volatile int c __attribute__((unused)); + for (auto _ : state) { + c = strncmp(s1_aligned, s2_aligned, nbytes); + } + + state.SetBytesProcessed(uint64_t(state.iterations()) * uint64_t(nbytes)); +} +BIONIC_BENCHMARK_WITH_ARG(BM_string_strncmp, "AT_ALIGNED_TWOBUF"); + static void BM_string_strstr(benchmark::State& state) { const size_t nbytes = state.range(0); const size_t haystack_alignment = state.range(1); |