mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
35 lines
1 KiB
Rust
35 lines
1 KiB
Rust
use bitbuffer::{BigEndian, BitWriteStream, Endianness, LittleEndian};
|
|
use iai_callgrind::{library_benchmark, library_benchmark_group, main};
|
|
use std::hint::black_box;
|
|
|
|
fn create_output<E: Endianness>(bit_size: usize, endianness: E) -> (E, Vec<u8>, 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<E: Endianness>((endianness, mut out, bit_size): (E, Vec<u8>, 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);
|