1
0
Fork 0
mirror of https://codeberg.org/icewind/bitbuffer.git synced 2026-06-03 08:34:07 +02:00

struct bench

This commit is contained in:
Robin Appelman 2020-01-07 19:50:42 +01:00
commit 4785f80cce
2 changed files with 27 additions and 5 deletions

View file

@ -2,7 +2,7 @@
extern crate test;
use bitstream_reader::{BigEndian, BitBuffer, Endianness, LittleEndian};
use bitstream_reader::{BigEndian, BitBuffer, BitRead, BitStream, Endianness, LittleEndian};
use test::Bencher;
fn read_perf<E: Endianness>(buffer: &BitBuffer<E>) -> u16 {
@ -256,3 +256,25 @@ fn perf_bytes_le_unaligned(b: &mut Bencher) {
}
});
}
#[allow(dead_code)]
#[derive(BitRead)]
struct BasicStruct {
a: f32,
b: bool,
#[size = 7]
c: u32,
}
#[bench]
fn perf_struct(b: &mut Bencher) {
let buffer = BitBuffer::new(get_string_buffer(), LittleEndian);
b.iter(|| {
let mut stream: BitStream<LittleEndian> = buffer.clone().into();
while stream.bits_left() > 40 {
let result = stream.read::<BasicStruct>().unwrap();
test::black_box(result);
}
});
}