Skip to main content

CircuitStat

Struct CircuitStat 

Source
pub struct CircuitStat {
Show 16 fields pub n_gates: usize, pub n_eval_insn: usize, pub n_and_constraints: usize, pub n_mul_constraints: usize, pub distinct_shifted_value_indices: usize, pub distinct_unshifted_value_indices: usize, pub value_vec_len: usize, pub n_const: usize, pub n_inout: usize, pub n_witness: usize, pub n_internal: usize, pub n_scratch: usize, pub and_allocated: usize, pub mul_allocated: usize, pub public_allocated: usize, pub private_allocated: usize,
}
Expand description

Various stats of a circuit that affect the prover performance.

Fields§

§n_gates: usize

Number of gates in the circuit.

§n_eval_insn: usize

Number of instructions in the evaluation form of circuit.

Directly proportional to performance of witness filling.

§n_and_constraints: usize

Number of AND constraints in the circuit.

Affects performance of AND reduction.

§n_mul_constraints: usize

Number of MUL constraints in the circuit.

Affects performance of intmul reduction phase.

§distinct_shifted_value_indices: usize

Number of distinct value indices with non-zero shift in the circuit.

Every use of a value with a distinct type and amount is counted here.

Affects performance of shift reduction phase.

§distinct_unshifted_value_indices: usize

Number of distinct value indices with zero shift in the circuit.

Affects performance of shift reduction phase.

§value_vec_len: usize

Length of the value vector.

Affects performance of committing.

§n_const: usize

Number of constant values used by the circuit.

§n_inout: usize

Number of public input values in the circuit.

§n_witness: usize

Number of private input values in the circuit.

§n_internal: usize

Number of internal values in the circuit.

Internal values are values produced by gates.

§n_scratch: usize

Number of scratch values in the circuit.

Those values are not committed, those only exist during witness generation.

§and_allocated: usize

Allocated size for AND constraints (power of 2)

§mul_allocated: usize

Allocated size for MUL constraints (power of 2)

§public_allocated: usize

Allocated size for public section (power of 2)

§private_allocated: usize

Allocated size for private section.

This is the space available for witness and internal values. Note that unlike public_allocated and the total committed length, this is NOT necessarily a power of two. It’s simply the difference between the total committed length (power of 2) and the public section size (power of 2). For example, if total is 8192 and public is 128, private is 8064.

Implementations§

Source§

impl CircuitStat

Source

pub fn collect(circuit: &Circuit) -> Self

Creates a new CircuitStat instance by collecting statistics from the given circuit.

Trait Implementations§

Source§

impl Display for CircuitStat

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more