[libcxx-commits] [libcxx] c7c7eab - [libc++] Add a benchmark for std::reverse (#125262)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Feb 3 09:10:50 PST 2025
Author: Louis Dionne
Date: 2025-02-03T12:10:47-05:00
New Revision: c7c7eabc7fc42433ed6a0a93ea14f279ad8d37af
URL: https://github.com/llvm/llvm-project/commit/c7c7eabc7fc42433ed6a0a93ea14f279ad8d37af
DIFF: https://github.com/llvm/llvm-project/commit/c7c7eabc7fc42433ed6a0a93ea14f279ad8d37af.diff
LOG: [libc++] Add a benchmark for std::reverse (#125262)
Added:
libcxx/test/benchmarks/algorithms/reverse.bench.cpp
Modified:
Removed:
################################################################################
diff --git a/libcxx/test/benchmarks/algorithms/reverse.bench.cpp b/libcxx/test/benchmarks/algorithms/reverse.bench.cpp
new file mode 100644
index 00000000000000..2d8dd819ac24c2
--- /dev/null
+++ b/libcxx/test/benchmarks/algorithms/reverse.bench.cpp
@@ -0,0 +1,48 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
+
+#include <algorithm>
+#include <iterator>
+#include <string>
+#include <vector>
+
+#include <benchmark/benchmark.h>
+#include "../GenerateInput.h"
+
+template <class T>
+static void bm_reverse(benchmark::State& state) {
+ std::size_t const n = state.range();
+ std::vector<T> vec;
+ std::generate_n(std::back_inserter(vec), n, [] { return Generate<T>::cheap(); });
+ for (auto _ : state) {
+ std::reverse(vec.begin(), vec.end());
+ benchmark::DoNotOptimize(vec);
+ }
+}
+BENCHMARK(bm_reverse<int>)->Name("std::reverse(vector<int>)")->DenseRange(1, 8)->Range(16, 1 << 20);
+BENCHMARK(bm_reverse<std::string>)->Name("std::reverse(vector<string>)")->DenseRange(1, 8)->Range(16, 1 << 20);
+
+template <class T>
+static void bm_ranges_reverse(benchmark::State& state) {
+ std::size_t const n = state.range();
+ std::vector<T> vec;
+ std::generate_n(std::back_inserter(vec), n, [] { return Generate<T>::cheap(); });
+ for (auto _ : state) {
+ std::ranges::reverse(vec.begin(), vec.end());
+ benchmark::DoNotOptimize(vec);
+ }
+}
+BENCHMARK(bm_ranges_reverse<int>)->Name("ranges::reverse(vector<int>)")->DenseRange(1, 8)->Range(16, 1 << 20);
+BENCHMARK(bm_ranges_reverse<std::string>)
+ ->Name("ranges::reverse(vector<string>)")
+ ->DenseRange(1, 8)
+ ->Range(16, 1 << 20);
+
+BENCHMARK_MAIN();
More information about the libcxx-commits
mailing list