From b6930e02c5f5901f129829307cdd9b04498d8bfa Mon Sep 17 00:00:00 2001 From: "Doncho N. Gunchev" Date: Sun, 5 Feb 2023 03:50:19 +0200 Subject: [PATCH] Add loop_lowercase_toupper --- .gitignore | 1 + README.md | 1 + bench_lowercase.png | Bin 0 -> 27580 bytes src/transform.cpp | 13 +++++++++++++ 4 files changed, 15 insertions(+) create mode 100644 bench_lowercase.png diff --git a/.gitignore b/.gitignore index 1ddd381..0d5a8d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Project specific /build/ +/CMakeLists.txt.user # Prerequisites *.d diff --git a/README.md b/README.md index 034d2b6..5c4d00d 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,4 @@ Various C++ benchmarks: - transform.cpp - benchmark std::transform vs loop and custom lowercase and tolower +![](bench_lowercase.png) diff --git a/bench_lowercase.png b/bench_lowercase.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef7ba26a8d115d9586842890ab9952d498e7ef4 GIT binary patch literal 27580 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 KrEtH~mHz?#gko&~ literal 0 HcmV?d00001 diff --git a/src/transform.cpp b/src/transform.cpp index 13765be..bbe8159 100755 --- a/src/transform.cpp +++ b/src/transform.cpp @@ -53,3 +53,16 @@ int main(int argc, char** argv) { benchmark::RunSpecifiedBenchmarks(); return EX_OK; } + +static void loop_lowercase_toupper(benchmark::State& state) { + for (auto _ : state) { // Code inside this loop is measured repeatedly + std::string name = data; + for (char& c : name) { + if (c >= 'a' && c <= 'z') { + c = static_cast(std::toupper(c)); + } + } + benchmark::DoNotOptimize(name); // Make sure the variable is not optimized away by compiler + } +} +BENCHMARK(loop_lowercase_toupper); // Register the function as a benchmark