From 0ddcec61606594bdf2d4077e16784b728714624f Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Sun, 14 Apr 2024 18:36:55 +0300 Subject: [PATCH 1/2] `swap_ranges` benchmark --- benchmarks/CMakeLists.txt | 1 + benchmarks/src/swap_ranges.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 benchmarks/src/swap_ranges.cpp diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 0f22a1f003e..1c05a7f7638 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -119,6 +119,7 @@ add_benchmark(priority_queue_push_range src/priority_queue_push_range.cpp) add_benchmark(random_integer_generation src/random_integer_generation.cpp) add_benchmark(replace src/replace.cpp) add_benchmark(std_copy src/std_copy.cpp) +add_benchmark(swap_ranges src/swap_ranges.cpp) add_benchmark(vector_bool_copy src/std/containers/sequences/vector.bool/copy/test.cpp) add_benchmark(vector_bool_copy_n src/std/containers/sequences/vector.bool/copy_n/test.cpp) diff --git a/benchmarks/src/swap_ranges.cpp b/benchmarks/src/swap_ranges.cpp new file mode 100644 index 00000000000..614eda7d59c --- /dev/null +++ b/benchmarks/src/swap_ranges.cpp @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include +#include + +using namespace std; + +template +void bm(benchmark::State& state) { + vector a(static_cast(state.range(0)), T{'a'}); + vector b(static_cast(state.range(0)), T{'b'}); + + for (auto _ : state) { + swap_ranges(a.begin(), a.end(), b.begin()); + benchmark::DoNotOptimize(a); + benchmark::DoNotOptimize(b); + } +} + +BENCHMARK(bm)->Arg(1)->Arg(5)->Arg(15)->Arg(26)->Arg(38)->Arg(60)->Arg(125)->Arg(800)->Arg(3000)->Arg(9000); + +BENCHMARK_MAIN(); From b840491fec82161ed923d42cb59c0f29d0f83788 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Mon, 15 Apr 2024 11:46:46 -0700 Subject: [PATCH 2/2] Include more headers. --- benchmarks/src/swap_ranges.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmarks/src/swap_ranges.cpp b/benchmarks/src/swap_ranges.cpp index 614eda7d59c..75328934d5e 100644 --- a/benchmarks/src/swap_ranges.cpp +++ b/benchmarks/src/swap_ranges.cpp @@ -3,6 +3,8 @@ #include #include +#include +#include #include using namespace std;