From 0e100998fcd25917f3e517d832e1a2c3790a6367 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Sun, 24 Jul 2016 06:51:55 +0000 Subject: [PATCH] Start adding benchmarks for vector llvm-svn: 276552 --- libcxx/benchmarks/ContainerBenchmarks.hpp | 13 ++++++++++- libcxx/benchmarks/vector_operations.bench.cpp | 32 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 libcxx/benchmarks/vector_operations.bench.cpp diff --git a/libcxx/benchmarks/ContainerBenchmarks.hpp b/libcxx/benchmarks/ContainerBenchmarks.hpp index 8321caf..6350e6b 100644 --- a/libcxx/benchmarks/ContainerBenchmarks.hpp +++ b/libcxx/benchmarks/ContainerBenchmarks.hpp @@ -7,6 +7,18 @@ namespace ContainerBenchmarks { + +template +void BM_ConstructIterIter(benchmark::State& st, Container, GenInputs gen) { + auto in = gen(st.range_x()); + const auto end = in.end(); + benchmark::DoNotOptimize(&in); + while (st.KeepRunning()) { + Container c(in.begin(), in.end()); + benchmark::DoNotOptimize(c.data()); + } +} + template void BM_InsertValue(benchmark::State& st, Container c, GenInputs gen) { auto in = gen(st.range_x()); @@ -93,7 +105,6 @@ static void BM_FindRehash(benchmark::State& st, Container c, GenInputs gen) { } benchmark::ClobberMemory(); } - } } // end namespace ContainerBenchmarks diff --git a/libcxx/benchmarks/vector_operations.bench.cpp b/libcxx/benchmarks/vector_operations.bench.cpp new file mode 100644 index 0000000..004e801 --- /dev/null +++ b/libcxx/benchmarks/vector_operations.bench.cpp @@ -0,0 +1,32 @@ +#include +#include +#include +#include +#include + +#include "benchmark/benchmark_api.h" + +#include "ContainerBenchmarks.hpp" +#include "GenerateInput.hpp" + +using namespace ContainerBenchmarks; + +constexpr std::size_t TestNumInputs = 1024; + +BENCHMARK_CAPTURE(BM_ConstructIterIter, + vector_char, + std::vector{}, + getRandomIntegerInputs)->Arg(TestNumInputs); + +BENCHMARK_CAPTURE(BM_ConstructIterIter, + vector_size_t, + std::vector{}, + getRandomIntegerInputs)->Arg(TestNumInputs); + +BENCHMARK_CAPTURE(BM_ConstructIterIter, + vector_string, + std::vector{}, + getRandomStringInputs)->Arg(TestNumInputs); + + +BENCHMARK_MAIN() -- 2.7.4