Added rs encoding and proofs generation benchmarks

This commit is contained in:
Daniel Sanchez Quiros 2024-04-26 17:52:24 +02:00
parent dd0334264a
commit a0c975f9aa
2 changed files with 47 additions and 2 deletions

View File

@ -1,4 +1,6 @@
use divan::counter::ItemsCount;
use divan::{black_box, counter::BytesCount, AllocProfiler, Bencher};
use kzgrs::{Evaluations, Polynomial};
use rand::RngCore;
use kzgrs_backend::encoder::{DaEncoder, DaEncoderParams};
@ -58,6 +60,49 @@ fn compute_1MB_data_matrix_kzg_row_commitments_with_column_count(
.bench_refs(|matrix| black_box(DaEncoder::compute_kzg_row_commitments(&matrix).is_ok()));
}
#[allow(non_snake_case)]
#[divan::bench(args = [100, 1000, 10000], sample_count = 1, sample_size = 1)]
fn compute_1MB_data_rs_encode_rows_with_column_count(bencher: Bencher, column_count: usize) {
let encoder_params: DaEncoderParams = DaEncoderParams::default_with(column_count);
let encoder: DaEncoder = DaEncoder::new(encoder_params);
let size = bencher
.with_inputs(|| {
let matrix = encoder.chunkify(rand_data(1).as_ref());
let (row_polynomials, _): (Vec<(Evaluations, Polynomial)>, Vec<_>) =
DaEncoder::compute_kzg_row_commitments(&matrix)
.unwrap()
.into_iter()
.unzip();
row_polynomials
})
.input_counter(|polynomials| ItemsCount::new(polynomials.len()))
.bench_refs(|polynomials| black_box(DaEncoder::rs_encode_rows(polynomials)));
}
#[allow(non_snake_case)]
#[divan::bench(args = [100, 1000, 10000], sample_count = 1, sample_size = 1)]
fn compute_1MB_data_compute_rows_proofs_with_column_count(bencher: Bencher, column_count: usize) {
let encoder_params: DaEncoderParams = DaEncoderParams::default_with(column_count);
let encoder: DaEncoder = DaEncoder::new(encoder_params);
let size = bencher
.with_inputs(|| {
let matrix = encoder.chunkify(rand_data(1).as_ref());
let (row_polynomials, _): (Vec<(Evaluations, Polynomial)>, Vec<_>) =
DaEncoder::compute_kzg_row_commitments(&matrix)
.unwrap()
.into_iter()
.unzip();
row_polynomials
.into_iter()
.map(|(_, poly)| poly)
.collect::<Vec<_>>()
})
.input_counter(|polynomials| ItemsCount::new(polynomials.len()))
.bench_refs(|polynomials| {
black_box(DaEncoder::compute_rows_proofs(polynomials, column_count).is_ok())
});
}
#[allow(non_snake_case)]
#[divan::bench(args = [100, 1000, 10000], sample_count = 1, sample_size = 1)]
fn encode_1MB_with_column_count(bencher: Bencher, column_count: usize) {

View File

@ -89,13 +89,13 @@ impl DaEncoder {
encode(row, evaluations, 2, *DOMAIN)
}
fn rs_encode_rows(rows: &[(Evaluations, Polynomial)]) -> Vec<Evaluations> {
pub fn rs_encode_rows(rows: &[(Evaluations, Polynomial)]) -> Vec<Evaluations> {
rows.iter()
.map(|(eval, poly)| Self::rs_encode_row(eval, poly))
.collect()
}
fn compute_rows_proofs(
pub fn compute_rows_proofs(
polynomials: &[Polynomial],
proof_count: usize,
) -> Result<Vec<Vec<Proof>>, KzgRsError> {