aboutsummaryrefslogtreecommitdiff
path: root/libcxx/benchmarks
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-07-24 06:51:55 +0000
committerEric Fiselier <eric@efcs.ca>2016-07-24 06:51:55 +0000
commit0e100998fcd25917f3e517d832e1a2c3790a6367 (patch)
treeb0e6b319df2fd7074f9a1a631ae93ec3390e5251 /libcxx/benchmarks
parent9a18d55947afc0ace5490da5c06aad7fd9d037c0 (diff)
downloadllvm-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.hpp13
-rw-r--r--libcxx/benchmarks/vector_operations.bench.cpp32
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()