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 | 0e100998fcd25917f3e517d832e1a2c3790a6367 (patch) | |
tree | b0e6b319df2fd7074f9a1a631ae93ec3390e5251 /libcxx/benchmarks | |
parent | 9a18d55947afc0ace5490da5c06aad7fd9d037c0 (diff) | |
download | llvm-0e100998fcd25917f3e517d832e1a2c3790a6367.zip llvm-0e100998fcd25917f3e517d832e1a2c3790a6367.tar.gz llvm-0e100998fcd25917f3e517d832e1a2c3790a6367.tar.bz2 |
Start adding benchmarks for vector
llvm-svn: 276552
Diffstat (limited to 'libcxx/benchmarks')
-rw-r--r-- | libcxx/benchmarks/ContainerBenchmarks.hpp | 13 | ||||
-rw-r--r-- | libcxx/benchmarks/vector_operations.bench.cpp | 32 |
2 files changed, 44 insertions, 1 deletions
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 <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/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 <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() |