Skip to content

Commit 98f5e3b

Browse files
authored
read directly into buffer (#13)
1 parent 5d563fe commit 98f5e3b

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/common/compressed_training_file_reader.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ impl<T: Read + Seek> CompressedTrainingDataFileReader<T> {
5252
Ok(data)
5353
}
5454

55+
pub fn read_next_chunk_into(&mut self, buffer: &mut Vec<u8>) -> Result<()> {
56+
let header = self.read_chunk_header()?;
57+
buffer.resize(header.chunk_size as usize, 0);
58+
self.file.read_exact(buffer)?;
59+
self.read_bytes += header.chunk_size as u64;
60+
Ok(())
61+
}
62+
5563
fn read_chunk_header(&mut self) -> Result<Header> {
5664
let mut buf = [0u8; HEADER_SIZE];
5765

src/reader/compressed_reader.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ impl<T: Read + Seek> CompressedTrainingDataEntryReader<T> {
9797
reader.is_end = true;
9898
return Err(CompressedReaderError::EndOfFile);
9999
} else {
100-
reader.chunk = match reader.input_file.as_mut().unwrap().read_next_chunk() {
101-
Ok(chunk) => chunk,
102-
Err(e) => return Err(CompressedReaderError::BinpackError(e)),
103-
};
100+
reader
101+
.input_file
102+
.as_mut()
103+
.unwrap()
104+
.read_next_chunk_into(&mut reader.chunk)?;
104105
}
105106

106107
Ok(reader)

0 commit comments

Comments
 (0)