Start adding benchmarks for vector
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@276552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
||||
|
||||
32
benchmarks/vector_operations.bench.cpp
Normal file
32
benchmarks/vector_operations.bench.cpp
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user