mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 08:34:07 +02:00
make usable with rust stable
This commit is contained in:
parent
26bc7f9350
commit
b8d6e4fd7a
2 changed files with 47 additions and 45 deletions
|
|
@ -1,9 +1,9 @@
|
||||||
#![feature(test)]
|
|
||||||
#![warn(missing_docs)]
|
#![warn(missing_docs)]
|
||||||
|
|
||||||
//! Tools for reading integers of arbitrary bit length and non byte-aligned integers and other data types
|
//! Tools for reading integers of arbitrary bit length and non byte-aligned integers and other data types
|
||||||
|
|
||||||
extern crate test;
|
// for bench on nightly
|
||||||
|
//extern crate test;
|
||||||
|
|
||||||
pub use endianness::{BigEndian, LittleEndian};
|
pub use endianness::{BigEndian, LittleEndian};
|
||||||
use endianness::Endianness;
|
use endianness::Endianness;
|
||||||
|
|
@ -95,7 +95,7 @@ pub type Result<T> = std::result::Result<T, ReadError>;
|
||||||
/// 0b1001_1001, 0b1001_1001, 0b1001_1001, 0b1110_0111,
|
/// 0b1001_1001, 0b1001_1001, 0b1001_1001, 0b1110_0111,
|
||||||
/// 0, 0, 0, 0, 0, 0, 0, 0
|
/// 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
/// ];
|
/// ];
|
||||||
/// let buffer = BitBuffer::from_padded_slice(bytes, LittleEndian);
|
/// let buffer = BitBuffer::from_padded_slice(bytes, 8, LittleEndian);
|
||||||
/// ```
|
/// ```
|
||||||
pub struct BitBuffer<'a, E, S>
|
pub struct BitBuffer<'a, E, S>
|
||||||
where
|
where
|
||||||
|
|
|
||||||
86
src/tests.rs
86
src/tests.rs
|
|
@ -1,6 +1,7 @@
|
||||||
use std::fs;
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use test::Bencher;
|
// for bench on nightly
|
||||||
|
//use std::fs;
|
||||||
|
//use test::Bencher;
|
||||||
|
|
||||||
const BYTES: &'static [u8] = &[
|
const BYTES: &'static [u8] = &[
|
||||||
0b1011_0101,
|
0b1011_0101,
|
||||||
|
|
@ -222,43 +223,44 @@ fn read_f64_le() {
|
||||||
assert_eq!(buffer.read_float::<f64>(6).unwrap(), 135447455835963910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0);
|
assert_eq!(buffer.read_float::<f64>(6).unwrap(), 135447455835963910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_perf<P: IsPadded>(buffer: BitBuffer<LittleEndian, P>) -> u16 {
|
// for bench on nightly
|
||||||
let size = 5;
|
//fn read_perf<P: IsPadded>(buffer: BitBuffer<LittleEndian, P>) -> u16 {
|
||||||
let mut pos = 0;
|
// let size = 5;
|
||||||
let len = buffer.bit_len();
|
// let mut pos = 0;
|
||||||
let mut result: u16 = 0;
|
// let len = buffer.bit_len();
|
||||||
loop {
|
// let mut result: u16 = 0;
|
||||||
if pos + size > len {
|
// loop {
|
||||||
return result;
|
// if pos + size > len {
|
||||||
}
|
// return result;
|
||||||
let data = buffer.read::<u16>(pos, size).unwrap();
|
// }
|
||||||
result = result.wrapping_add(data);
|
// let data = buffer.read::<u16>(pos, size).unwrap();
|
||||||
pos += size;
|
// result = result.wrapping_add(data);
|
||||||
}
|
// pos += size;
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
#[bench]
|
//
|
||||||
fn perf_padded(b: &mut Bencher) {
|
//#[bench]
|
||||||
let mut file = fs::read("/bulk/tmp/test.dem").expect("Unable to read file");
|
//fn perf_padded(b: &mut Bencher) {
|
||||||
let len = file.len();
|
// let mut file = fs::read("/bulk/tmp/test.dem").expect("Unable to read file");
|
||||||
file.extend_from_slice(&[0, 0, 0, 0, 0, 0, 0, 0]);
|
// let len = file.len();
|
||||||
let bytes = file.as_slice();
|
// file.extend_from_slice(&[0, 0, 0, 0, 0, 0, 0, 0]);
|
||||||
b.iter(|| {
|
// let bytes = file.as_slice();
|
||||||
let buffer = BitBuffer::from_padded_slice(&bytes, len, LittleEndian);
|
// b.iter(|| {
|
||||||
let data = read_perf(buffer);
|
// let buffer = BitBuffer::from_padded_slice(&bytes, len, LittleEndian);
|
||||||
assert_eq!(data, 43943);
|
// let data = read_perf(buffer);
|
||||||
test::black_box(data);
|
// assert_eq!(data, 43943);
|
||||||
});
|
// test::black_box(data);
|
||||||
}
|
// });
|
||||||
|
//}
|
||||||
#[bench]
|
//
|
||||||
fn perf_non_padded(b: &mut Bencher) {
|
//#[bench]
|
||||||
let file = fs::read("/bulk/tmp/test.dem").expect("Unable to read file");
|
//fn perf_non_padded(b: &mut Bencher) {
|
||||||
let bytes = file.as_slice();
|
// let file = fs::read("/bulk/tmp/test.dem").expect("Unable to read file");
|
||||||
b.iter(|| {
|
// let bytes = file.as_slice();
|
||||||
let buffer = BitBuffer::new(&bytes, LittleEndian);
|
// b.iter(|| {
|
||||||
let data = read_perf(buffer);
|
// let buffer = BitBuffer::new(&bytes, LittleEndian);
|
||||||
assert_eq!(data, 43943);
|
// let data = read_perf(buffer);
|
||||||
test::black_box(data);
|
// assert_eq!(data, 43943);
|
||||||
});
|
// test::black_box(data);
|
||||||
}
|
// });
|
||||||
|
//}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue