mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 16:44:06 +02:00
struct bench
This commit is contained in:
parent
92d23dc14f
commit
4785f80cce
2 changed files with 27 additions and 5 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
extern crate test;
|
extern crate test;
|
||||||
|
|
||||||
use bitstream_reader::{BigEndian, BitBuffer, Endianness, LittleEndian};
|
use bitstream_reader::{BigEndian, BitBuffer, BitRead, BitStream, Endianness, LittleEndian};
|
||||||
use test::Bencher;
|
use test::Bencher;
|
||||||
|
|
||||||
fn read_perf<E: Endianness>(buffer: &BitBuffer<E>) -> u16 {
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,9 +133,9 @@ where
|
||||||
where
|
where
|
||||||
T: PrimInt + BitOrAssign + IsSigned + UncheckedPrimitiveInt,
|
T: PrimInt + BitOrAssign + IsSigned + UncheckedPrimitiveInt,
|
||||||
{
|
{
|
||||||
|
let result = self.buffer.read_int(self.pos, count);
|
||||||
self.pos += count;
|
self.pos += count;
|
||||||
|
result
|
||||||
self.buffer.read_int(self.pos, count)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
|
@ -143,9 +143,9 @@ where
|
||||||
where
|
where
|
||||||
T: PrimInt + BitOrAssign + IsSigned + UncheckedPrimitiveInt,
|
T: PrimInt + BitOrAssign + IsSigned + UncheckedPrimitiveInt,
|
||||||
{
|
{
|
||||||
|
let result = self.buffer.read_int_unchecked(self.pos, count);
|
||||||
self.pos += count;
|
self.pos += count;
|
||||||
|
result
|
||||||
self.buffer.read_int_unchecked(self.pos, count)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Read a sequence of bits from the stream as float
|
/// Read a sequence of bits from the stream as float
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue