diff options
author | Eric Fiselier <eric@efcs.ca> | 2016-07-24 06:51:55 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2016-07-24 06:51:55 +0000 |
commit | b90f9db20e59349d7698297a36c3f95ff63aef34 (patch) | |
tree | 19db04e2d03c7c967bead5151c8b1dfb6b423ba4 /benchmarks | |
parent | d7570906b12a6d7d2fe7dc80ca8ee4a29d55d4b2 (diff) |
Start adding benchmarks for vector
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276552 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/ContainerBenchmarks.hpp | 13 | ||||
-rw-r--r-- | benchmarks/vector_operations.bench.cpp | 32 |
2 files changed, 44 insertions, 1 deletions
diff --git a/benchmarks/ContainerBenchmarks.hpp b/benchmarks/ContainerBenchmarks.hpp index 8321caf33..6350e6b01 100644 --- a/benchmarks/ContainerBenchmarks.hpp +++ b/benchmarks/ContainerBenchmarks.hpp @@ -7,6 +7,18 @@ namespace ContainerBenchmarks { + +template <class Container, class GenInputs> +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 <class Container, class GenInputs> 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/benchmarks/vector_operations.bench.cpp b/benchmarks/vector_operations.bench.cpp new file mode 100644 index 000000000..004e801f0 --- /dev/null +++ b/benchmarks/vector_operations.bench.cpp @@ -0,0 +1,32 @@ +#include <vector> +#include <functional> +#include <cstdint> +#include <cstdlib> +#include <cstring> + +#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<char>{}, + getRandomIntegerInputs<char>)->Arg(TestNumInputs); + +BENCHMARK_CAPTURE(BM_ConstructIterIter, + vector_size_t, + std::vector<size_t>{}, + getRandomIntegerInputs<size_t>)->Arg(TestNumInputs); + +BENCHMARK_CAPTURE(BM_ConstructIterIter, + vector_string, + std::vector<std::string>{}, + getRandomStringInputs)->Arg(TestNumInputs); + + +BENCHMARK_MAIN() |