6#include <benchmark/benchmark.h>
23 for (
size_t i = 0; i < num_nonzero; i++) {
41 std::vector<uint32_t> fixed_sizes = {
42 1 << 10, 1 << 7, 201000, 90000, 9000, 137000, 72000, 1 << 7, 2500, 11500,
44 std::vector<uint32_t> actual_sizes = {
45 10, 16, 48873, 18209, 4132, 23556, 35443, 3, 2, 2,
48 uint32_t full_size = 0;
49 for (
auto size : fixed_sizes) {
55 if ((1UL << log2_n) != (full_size)) {
58 full_size = 1 << log2_n;
62 uint32_t start_idx = 0;
65 for (
auto [block_size, actual_size] :
zip_view(fixed_sizes, actual_sizes)) {
66 end_idx = start_idx + actual_size;
67 for (
size_t i = start_idx; i < end_idx; ++i) {
70 active_range_endpoints.emplace_back(start_idx, end_idx);
71 start_idx += block_size;
73 if (non_zero_complement) {
75 for (
size_t i = end_idx; i < start_idx; ++i) {
76 polynomial.at(i) = const_random_coeff;
81 return { polynomial, active_range_endpoints };
94 const size_t num_points = 1 << state.range(0);
96 for (
auto _ : state) {
97 key.commit(polynomial);
107 const size_t num_points = 1 << state.range(0);
111 for (
size_t i = 0; i < num_nonzero; i++) {
112 polynomial.at(i) = 1;
115 for (
auto _ : state) {
116 key.commit(polynomial);
126 const size_t num_points = 1 << state.range(0);
130 for (
size_t i = 0; i < num_nonzero; i++) {
131 polynomial.at(i) = 1;
134 for (
auto _ : state) {
135 key.commit(polynomial);
145 const size_t num_points = 1 << state.range(0);
148 auto polynomial = sparse_random_poly<Fr>(num_points, num_nonzero);
150 for (
auto _ : state) {
151 key.commit(polynomial);
161 const size_t num_points = 1 << state.range(0);
164 auto polynomial = sparse_random_poly<Fr>(num_points, num_nonzero);
166 for (
auto _ : state) {
167 key.commit(polynomial);
177 const size_t num_points = 1 << state.range(0);
179 for (
auto _ : state) {
180 key.commit(polynomial);
191 const size_t num_points = 1 << state.range(0);
193 for (
auto _ : state) {
194 key.commit(polynomial);
204 auto [polynomial, active_range_endpoints] = structured_random_poly<Fr>();
206 for (
auto _ : state) {
207 key.commit(polynomial);
217 auto [polynomial, active_range_endpoints] = structured_random_poly<Fr>(
true);
219 for (
auto _ : state) {
220 key.commit(polynomial);
242 for (
auto _ : state) {
244 const size_t num_points = 1 << state.range(0);
247 state.ResumeTiming();
249 std::vector<Commitment> G_vec_local(num_points);
254 bb::scalar_multiplication::pippenger_unsafe<Curve>(s_poly, { &G_vec_local[0], num_points });
258BENCHMARK(bench_pippenger_without_endomorphism_basis_points<curve::Grumpkin>)
260 ->Unit(benchmark::kMillisecond);
262BENCHMARK(bench_commit_zero<curve::BN254>)
264 ->Unit(benchmark::kMillisecond);
265BENCHMARK(bench_commit_sparse<curve::BN254>)
267 ->Unit(benchmark::kMillisecond);
268BENCHMARK(bench_commit_sparse_preprocessed<curve::BN254>)
270 ->Unit(benchmark::kMillisecond);
271BENCHMARK(bench_commit_sparse_random<curve::BN254>)
273 ->Unit(benchmark::kMillisecond);
274BENCHMARK(bench_commit_sparse_random_preprocessed<curve::BN254>)
276 ->Unit(benchmark::kMillisecond);
277BENCHMARK(bench_commit_random<curve::BN254>)
279 ->Unit(benchmark::kMillisecond);
280BENCHMARK(bench_commit_random_non_power_of_2<curve::BN254>)
282 ->Unit(benchmark::kMillisecond);
283BENCHMARK(bench_commit_structured_random_poly<curve::BN254>)->Unit(benchmark::kMillisecond);
284BENCHMARK(bench_commit_mock_z_perm<curve::BN254>)->Unit(benchmark::kMillisecond);
CommitmentKey object over a pairing group 𝔾₁.
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
static Polynomial random(size_t size, size_t start_index=0)
typename Group::affine_element AffineElement
virtual uint32_t get_random_uint32()=0
constexpr T get_msb(const T in)
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
constexpr size_t FF_COPY_COST
Entry point for Barretenberg command-line interface.
constexpr size_t MAX_NUM_GRUMPKIN_POINTS
CommitmentKey< Curve > create_commitment_key(const size_t num_points)
Polynomial< FF > sparse_random_poly(const size_t size, const size_t num_nonzero)
constexpr size_t MAX_LOG_NUM_POINTS
constexpr size_t MIN_LOG_NUM_GRUMPKIN_POINTS
void bench_commit_sparse_random(::benchmark::State &state)
void bench_commit_sparse_random_preprocessed(::benchmark::State &state)
constexpr size_t MAX_LOG_NUM_GRUMPKIN_POINTS
void bench_commit_random_non_power_of_2(::benchmark::State &state)
void bench_commit_random(::benchmark::State &state)
constexpr size_t MIN_LOG_NUM_POINTS
constexpr size_t MAX_NUM_POINTS
void bench_commit_mock_z_perm(::benchmark::State &state)
void bench_commit_sparse(::benchmark::State &state)
constexpr size_t SPARSE_NUM_NONZERO
void parallel_for_heuristic(size_t num_points, const std::function< void(size_t, size_t, size_t)> &func, size_t heuristic_cost)
Split a loop into several loops running in parallel based on operations in 1 iteration.
void bench_commit_sparse_preprocessed(::benchmark::State &state)
void bench_commit_zero(::benchmark::State &state)
void bench_commit_structured_random_poly(::benchmark::State &state)
BENCHMARK(bench_commit_structured_random_poly< curve::BN254 >) -> Unit(benchmark::kMillisecond)
void bench_pippenger_without_endomorphism_basis_points(::benchmark::State &state)
Benchmark pippenger_without_endomorphism_basis_points function, which is used notably in the IPA veri...
PolyData< FF > structured_random_poly(bool non_zero_complement=false)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::vector< std::pair< size_t, size_t > > active_range_endpoints
Polynomial< FF > polynomial
static field random_element(numeric::RNG *engine=nullptr) noexcept