This commit is contained in:
Dawid Ciężarkiewicz 2017-08-06 07:59:22 +00:00 committed by GitHub
commit 174091c7de
1 changed files with 8 additions and 9 deletions

View File

@ -26,22 +26,21 @@ fn random_data(seed: u64, size: usize) -> Vec<u8> {
} }
struct CutPositions(Vec<u64>, u64); struct CutPositions(Vec<u8>, u64);
impl CutPositions { impl CutPositions {
pub fn new() -> Self { pub fn new() -> Self {
CutPositions(vec![], 0) CutPositions(Vec::with_capacity(1024*1024), 0)
} }
pub fn positions(&self) -> &[u64] { pub fn data(&self) -> &[u8] {
&self.0 &self.0
} }
} }
impl Write for CutPositions { impl Write for CutPositions {
fn write(&mut self, data: &[u8]) -> Result<usize, io::Error> { fn write(&mut self, data: &[u8]) -> Result<usize, io::Error> {
self.1 += data.len() as u64; self.0.extend_from_slice(data);
self.0.push(self.1);
Ok(data.len()) Ok(data.len())
} }
@ -67,7 +66,7 @@ fn test_fixed_8192(b: &mut Bencher) {
let mut cursor = Cursor::new(&data); let mut cursor = Cursor::new(&data);
let mut sink = CutPositions::new(); let mut sink = CutPositions::new();
while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {}; while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {};
test::black_box(sink.positions().len()) test::black_box(sink.data().len())
}) })
} }
@ -88,7 +87,7 @@ fn test_ae_8192(b: &mut Bencher) {
let mut cursor = Cursor::new(&data); let mut cursor = Cursor::new(&data);
let mut sink = CutPositions::new(); let mut sink = CutPositions::new();
while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {}; while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {};
test::black_box(sink.positions().len()) test::black_box(sink.data().len())
}) })
} }
@ -109,7 +108,7 @@ fn test_rabin_8192(b: &mut Bencher) {
let mut cursor = Cursor::new(&data); let mut cursor = Cursor::new(&data);
let mut sink = CutPositions::new(); let mut sink = CutPositions::new();
while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {}; while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {};
test::black_box(sink.positions().len()) test::black_box(sink.data().len())
}) })
} }
@ -130,6 +129,6 @@ fn test_fastcdc_8192(b: &mut Bencher) {
let mut cursor = Cursor::new(&data); let mut cursor = Cursor::new(&data);
let mut sink = CutPositions::new(); let mut sink = CutPositions::new();
while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {}; while chunker.chunk(&mut cursor, &mut sink).unwrap() == ChunkerStatus::Continue {};
test::black_box(sink.positions().len()) test::black_box(sink.data().len())
}) })
} }