everscale-types 0.1.2

A set of primitive types and utilities for the Everscale blockchain.
Documentation
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
use everscale_types::prelude::*;

fn test_uniform(c: &mut Criterion) {
    let cells = (0..=32)
        .chain([
            40, 60, 64, 80, 96, 127, 128, 160, 196, 200, 255, 256, 300, 400, 500, 600, 700, 800,
            900, 1000, 1023,
        ])
        .map(|bits| {
            let mut builder = CellBuilder::new();
            builder.store_zeros(bits).unwrap();
            builder.build().unwrap()
        })
        .collect::<Vec<_>>();

    for cell in cells {
        let slice = cell.as_slice().unwrap();
        c.bench_with_input(
            BenchmarkId::new("test slice uniform", slice.size_bits()),
            &slice,
            |b, slice| b.iter(|| black_box(slice.test_uniform())),
        );
    }
}

criterion_group!(benches, test_uniform);
criterion_main!(benches);