use bitbuffer::{BigEndian, BitWriteStream, Endianness, LittleEndian}; use iai_callgrind::{library_benchmark, library_benchmark_group, main}; use std::hint::black_box; fn create_output(bit_size: usize, endianness: E) -> (E, Vec, usize) { ( endianness, Vec::with_capacity(bit_size.next_power_of_two() / 8 * 128), bit_size, ) } #[library_benchmark(setup = create_output)] #[bench::le_small(7, LittleEndian)] #[bench::be_small(7, BigEndian)] #[bench::le_medium(15, LittleEndian)] #[bench::be_medoim(15, BigEndian)] #[bench::le_large(57, LittleEndian)] #[bench::be_large(57, BigEndian)] fn write_int_le((endianness, mut out, bit_size): (E, Vec, usize)) { { let mut write = BitWriteStream::new(&mut out, endianness); for i in 0..128 { write.write_sized(&black_box(i as u64), bit_size).unwrap(); } } black_box(out); } library_benchmark_group!( name = bench_write_group; benchmarks = write_int_le ); main!(library_benchmark_groups = bench_write_group);