1#include <benchmark/benchmark.h>
7using namespace benchmark;
13static void construct_proof_ultrahonk(State& state,
16 size_t num_iterations = 10;
17 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
18 state, test_circuit_function, num_iterations);
24static void construct_proof_ultrahonk_power_of_2(State& state)
noexcept
26 auto log2_of_gates =
static_cast<size_t>(state.range(0));
27 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
28 state, &bb::mock_circuits::generate_basic_arithmetic_circuit<UltraCircuitBuilder>, log2_of_gates);
34static void construct_proof_ultrahonk_zk_power_of_2(State& state)
noexcept
36 auto log2_of_gates =
static_cast<size_t>(state.range(0));
37 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraZKProver>(
38 state, &bb::mock_circuits::generate_basic_arithmetic_circuit<UltraCircuitBuilder>, log2_of_gates);
45static void construct_proof_ultrahonk_1M_gates_dyadic_2_20(State& state)
noexcept
48 size_t num_gates = (1 << 20) - 1000;
52 bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>(
builder, num_gates);
54 size_t dyadic_size =
instance->dyadic_size();
55 info(
"construct_proof_ultrahonk_1M_gates_dyadic_2_20: requested=",
62 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
63 state, &bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>, num_gates);
70static void construct_proof_ultrahonk_1M_gates_dyadic_2_21(State& state)
noexcept
73 size_t num_gates = (1 << 20) + 1000;
77 bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>(
builder, num_gates);
79 size_t dyadic_size =
instance->dyadic_size();
80 info(
"construct_proof_ultrahonk_1M_gates_dyadic_2_21: requested=",
87 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
88 state, &bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>, num_gates);
94static void construct_proof_ultrahonk_poseidon2_hash(State& state)
noexcept
96 const auto num_inputs =
static_cast<size_t>(state.range(0));
99 bb::generate_poseidon2_hash_test_circuit<UltraCircuitBuilder>(
builder, num_inputs);
101 info(
"construct_proof_ultrahonk_poseidon2_hash: num_inputs=",
108 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
109 state, &bb::generate_poseidon2_hash_test_circuit<UltraCircuitBuilder>, num_inputs);
114BENCHMARK(construct_proof_ultrahonk_poseidon2_hash)
121 ->Unit(kMillisecond);
124 ->Unit(kMillisecond);
127 &stdlib::generate_ecdsa_verification_test_circuit<UltraCircuitBuilder>)
128 ->Unit(kMillisecond);
130BENCHMARK(construct_proof_ultrahonk_power_of_2)
133 ->Unit(kMillisecond);
135BENCHMARK(construct_proof_ultrahonk_zk_power_of_2)
138 ->Unit(kMillisecond);
144static void construct_proof_ultrahonk_sparse(State& state)
noexcept
146 auto log2_of_gates =
static_cast<size_t>(state.range(0));
147 size_t target_gates = (1UL << log2_of_gates) + (1UL << log2_of_gates) / 10;
148 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraProver>(
150 &bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>,
157static void construct_proof_ultrahonk_zk_sparse(State& state)
noexcept
159 auto log2_of_gates =
static_cast<size_t>(state.range(0));
160 size_t target_gates = (1UL << log2_of_gates) + (1UL << log2_of_gates) / 10;
161 bb::mock_circuits::construct_proof_with_specified_num_iterations<UltraZKProver>(
163 &bb::mock_circuits::generate_basic_arithmetic_circuit_with_target_gates<UltraCircuitBuilder>,
167BENCHMARK(construct_proof_ultrahonk_sparse)->DenseRange(15, 20)->Unit(kMillisecond);
169BENCHMARK(construct_proof_ultrahonk_zk_sparse)->DenseRange(15, 20)->Unit(kMillisecond);
171BENCHMARK(construct_proof_ultrahonk_1M_gates_dyadic_2_20)->Unit(kMillisecond);
172BENCHMARK(construct_proof_ultrahonk_1M_gates_dyadic_2_21)->Unit(kMillisecond);
180 ::benchmark::Initialize(&argc, argv);
181 if (::benchmark::ReportUnrecognizedArguments(argc, argv))
183 ::benchmark::RunSpecifiedBenchmarks();
184 ::benchmark::Shutdown();
187 std::cout <<
"\n=== Detailed BB_BENCH Profiling Stats ===\n";
std::shared_ptr< Napi::ThreadSafeFunction > instance
GlobalBenchStatsContainer GLOBAL_BENCH_STATS
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
void print_aggregate_counts_hierarchical(std::ostream &) const
BENCHMARK_CAPTURE(construct_proof_ultrahonk, ecdsa_verification, &stdlib::generate_ecdsa_verification_test_circuit< UltraCircuitBuilder >) -> Unit(kMillisecond)
int main(int argc, char **argv)
BENCHMARK(construct_proof_ultrahonk_sparse) -> DenseRange(15, 20) ->Unit(kMillisecond)