summaryrefslogtreecommitdiff
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
commit22e47cee5fa5627d8daa147a15e52dbcbc805d28 (patch)
treec6fb98f3ab31264f55f28e96b3226c4a1c3c7bd7 /libcxx/benchmarks
parent20171850e3fc66c52461ad8526d45aa2607ebb12 (diff)
Start adding benchmarks for vector
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 8321caf3385..6350e6b013c 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 00000000000..004e801f0be
--- /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()