shared-buffer-rs 0.4.1

A library which combines Arc and RefCell for Send and Sync
Documentation
use divan::Bencher;
use shared_buffer_rs::RwBuffers;


fn main() 
{
    // Run registered benchmarks.
    divan::main();
}

#[divan::bench]
fn access_alloc_inplace(bencher: Bencher) 
{

    let mut bufs = RwBuffers::new(4096, 1, 2).unwrap();

    bencher
        .bench_local(
            move || 
            {
                let buf0_res = bufs.allocate_in_place();
                drop(buf0_res);
            }
        );
}

#[divan::bench]
fn access_write(bencher: Bencher) 
{

    let mut bufs = RwBuffers::new(4096, 1, 2).unwrap();

    let buf0 = bufs.allocate().unwrap();

    bencher
        .bench(
            move || 
            {
                let buf0_w = buf0.write().unwrap();
                drop(buf0_w);
            }
        );
}

#[divan::bench]
fn access_read(bencher: Bencher) 
{

    let mut bufs = RwBuffers::new(4096, 1, 2).unwrap();

    let buf0 = bufs.allocate().unwrap();

    bencher
        .bench(
            move || 
            {
                let buf0_w = buf0.read().unwrap();
                drop(buf0_w);
            }
        );
}