Benchmarks for construct, find, insert and iterate, with sequential
and random ordered inputs.
It also improves the cartesian product benchmark header to allow for
runtime values to be specified in the product.
Differential D53523
Add benchmark for std::set. sbenza on Oct 22 2018, 12:59 PM. Authored by
Details Benchmarks for construct, find, insert and iterate, with sequential It also improves the cartesian product benchmark header to allow for
Diff Detail
Event TimelineComment Actions Hi! FYI, this patch fails to compile on my machine: Required change: void run(benchmark::State& State) const { std::vector<size_t> Keys(TableSize); void run(benchmark::State& State) const { std::vector<uint64_t> Keys(TableSize); I'll add to the pr I'm working on now. /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:46:69: note: in instantiation of member function '(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >::run' requested here [=](benchmark::State& S) { Bench.run(S); }); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:53:3: note: in instantiation of function template specialization 'internal::makeBenchmarkFromValuesImpl<(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, 0, 1>' requested here makeBenchmarkFromValuesImpl<B>(A, std::index_sequence_for<Args...>()); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:58:3: note: in instantiation of function template specialization 'internal::makeBenchmarkFromValues<(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >, unsigned long, unsigned long>' requested here makeBenchmarkFromValues<B<U...> >(A); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:65:14: note: in instantiation of function template specialization 'internal::makeBenchmarkImpl<Create, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >' requested here (internal::makeBenchmarkImpl<B>(A, std::tuple<U..., T>(), rest...), ...); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:115:13: note: in instantiation of function template specialization 'internal::makeBenchmarkImpl<Create, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0>, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >' requested here internal::makeBenchmarkImpl<B>(V, std::tuple<>(), Tuples()...); ^ /space/llvm/llvm/projects/libcxx/benchmarks/ordered_set.bench.cpp:237:3: note: in instantiation of function template specialization 'makeCartesianProductBenchmark<Create, (anonymous namespace)::AllAccessPattern, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >' requested here makeCartesianProductBenchmark<Create, AllAccessPattern>(TableSize, NumTables); ^ /space/llvm/llvm/projects/libcxx/benchmarks/ordered_set.bench.cpp:37:6: note: candidate function not viable: no known conversion from 'std::vector<size_t>' (aka 'vector<unsigned long>') to 'std::vector<uint64_t> &' (aka 'vector<unsigned long long> &') for 1st argument void sortKeysBy(std::vector<uint64_t>& Keys, AccessPattern AP) { ^ /space/llvm/llvm/projects/libcxx/benchmarks/ordered_set.bench.cpp:88:5: error: no matching function for call to 'sortKeysBy' sortKeysBy(Keys, Access()); ^~~~~~~~~~ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:46:69: note: in instantiation of member function '(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0> >::run' requested here [=](benchmark::State& S) { Bench.run(S); }); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:53:3: note: in instantiation of function template specialization 'internal::makeBenchmarkFromValuesImpl<(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0> >, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, 0, 1>' requested here makeBenchmarkFromValuesImpl<B>(A, std::index_sequence_for<Args...>()); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:58:3: note: in instantiation of function template specialization 'internal::makeBenchmarkFromValues<(anonymous namespace)::Create<internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0> >, unsigned long, unsigned long>' requested here makeBenchmarkFromValues<B<U...> >(A); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:65:14: note: in instantiation of function template specialization 'internal::makeBenchmarkImpl<Create, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0> >' requested here (internal::makeBenchmarkImpl<B>(A, std::tuple<U..., T>(), rest...), ...); ^ /space/llvm/llvm/projects/libcxx/benchmarks/CartesianBenchmarks.hpp:115:13: note: in instantiation of function template specialization 'internal::makeBenchmarkImpl<Create, std::__1::vector<std::__1::tuple<unsigned long, unsigned long>, std::__1::allocator<std::__1::tuple<unsigned long, unsigned long> > >, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 0>, internal::EnumValue<(anonymous namespace)::AllAccessPattern, (anonymous namespace)::AccessPattern, 1> >' requested here internal::makeBenchmarkImpl<B>(V, std::tuple<>(), Tuples()...); ^ /space/llvm/llvm/projects/libcxx/benchmarks/ordered_set.bench.cpp:237:3: note: in instantiation of function template specialization 'makeCartesianProductBenchmark<Create, (anonymous namespace)::AllAccessPattern, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >' requested here makeCartesianProductBenchmark<Create, AllAccessPattern>(TableSize, NumTables); ^ /space/llvm/llvm/projects/libcxx/benchmarks/ordered_set.bench.cpp:37:6: note: candidate function not viable: no known conversion from 'std::vector<size_t>' (aka 'vector<unsigned long>') to 'std::vector<uint64_t> &' (aka 'vector<unsigned long long> &') for 1st argument void sortKeysBy(std::vector<uint64_t>& Keys, AccessPattern AP) { ^ 2 warnings and 2 errors generated. |