Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
circuit_construction.bench.cpp
Go to the documentation of this file.
1
2#include <benchmark/benchmark.h>
3
7
8using namespace benchmark;
9using namespace bb;
10
11namespace {
12
14void biggroup_construction_bench(State& state)
15{
17 using affine_element = Curve::AffineElementNative;
18 using element_ct = Curve::Element;
19 using scalar_ct = Curve::ScalarField;
20 for (auto _ : state) {
21 state.PauseTiming();
22
24 size_t num_points = static_cast<size_t>(state.range(0));
26 std::vector<fr> scalars;
27 for (size_t i = 0; i < num_points; ++i) {
28 points.push_back(affine_element(Curve::ElementNative::random_element()));
29 scalars.push_back(fr::random_element());
30 }
31
32 std::vector<element_ct> circuit_points;
33 std::vector<scalar_ct> circuit_scalars;
34 for (size_t i = 0; i < num_points; ++i) {
35 circuit_points.push_back(element_ct::from_witness(&builder, points[i]));
36 circuit_scalars.push_back(scalar_ct::from_witness(&builder, scalars[i]));
37 }
38 state.ResumeTiming();
39 element_ct::batch_mul(circuit_points, circuit_scalars);
40 state.PauseTiming();
41 }
42}
43} // namespace
44BENCHMARK(biggroup_construction_bench)->Unit(kMicrosecond)->DenseRange(2, 20);
45
BENCHMARK(biggroup_construction_bench) -> Unit(kMicrosecond) ->DenseRange(2, 20)
BENCHMARK_MAIN()
typename Group::element Element
Definition grumpkin.hpp:55
AluTraceBuilder builder
Definition alu.test.cpp:123
grumpkin::g1::affine_element affine_element
Definition c_bind.hpp:15
numeric::RNG & engine
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition engine.cpp:190
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
static field random_element(numeric::RNG *engine=nullptr) noexcept