summaryrefslogtreecommitdiff
path: root/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
commitb90f9db20e59349d7698297a36c3f95ff63aef34 (patch)
tree19db04e2d03c7c967bead5151c8b1dfb6b423ba4 /benchmarks
parentd7570906b12a6d7d2fe7dc80ca8ee4a29d55d4b2 (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.hpp13
-rw-r--r--benchmarks/vector_operations.bench.cpp32
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()