authorgravatar for joad.nacer@gmail.comjoadnacer <joad.nacer@gmail.com> 2023-10-21 19:20:12+01:00
committergravatar for joad.nacer@gmail.comjoadnacer <joad.nacer@gmail.com> 2023-10-21 19:20:12+01:00
loga8eb70c9d70e2cdff032fdf80b304d70b002b120
tree1bc7a9562c608b979fdc970dd46f515728d88a29
parent7f9e0f1c562067c9eda357f61e86bcc622323a27

compress: Improve RingBuffer usage


2 files changed, 4 insertions(+), 8 deletions(-)

lib/std/compress/zstandard.zig+1-3
...@@ -219,9 +219,7 @@ pub fn DecompressStream(...@@ -219,9 +219,7 @@ pub fn DecompressStream(
219 }219 }
220220
221 const size = @min(self.buffer.len(), buffer.len);221 const size = @min(self.buffer.len(), buffer.len);
222 for (0..size) |i| {222 self.buffer.readFirstAssumeLength(buffer, size);
223 buffer[i] = self.buffer.read().?;
224 }
225 if (self.state == .LastBlock and self.buffer.len() == 0) {223 if (self.state == .LastBlock and self.buffer.len() == 0) {
226 self.state = .NewFrame;224 self.state = .NewFrame;
227 self.allocator.free(self.literal_fse_buffer);225 self.allocator.free(self.literal_fse_buffer);
lib/std/compress/zstandard/decode/block.zig+3-5
...@@ -311,8 +311,8 @@ pub const DecodeState = struct {...@@ -311,8 +311,8 @@ pub const DecodeState = struct {
311 try self.decodeLiteralsRingBuffer(dest, sequence.literal_length);311 try self.decodeLiteralsRingBuffer(dest, sequence.literal_length);
312 const copy_start = dest.write_index + dest.data.len - sequence.offset;312 const copy_start = dest.write_index + dest.data.len - sequence.offset;
313 const copy_slice = dest.sliceAt(copy_start, sequence.match_length);313 const copy_slice = dest.sliceAt(copy_start, sequence.match_length);
314 for (copy_slice.first) |b| dest.writeAssumeCapacity(b);314 dest.writeSliceForwardsAssumeCapacity(copy_slice.first);
315 for (copy_slice.second) |b| dest.writeAssumeCapacity(b);315 dest.writeSliceForwardsAssumeCapacity(copy_slice.second);
316 self.written_count += sequence.match_length;316 self.written_count += sequence.match_length;
317 }317 }
318318
...@@ -723,9 +723,7 @@ pub fn decodeBlockRingBuffer(...@@ -723,9 +723,7 @@ pub fn decodeBlockRingBuffer(
723 },723 },
724 .rle => {724 .rle => {
725 if (src.len < 1) return error.MalformedRleBlock;725 if (src.len < 1) return error.MalformedRleBlock;
726 for (0..block_size) |_| {726 dest.writeSliceAssumeCapacity(src[0..block_size]);
727 dest.writeAssumeCapacity(src[0]);
728 }
729 consumed_count.* += 1;727 consumed_count.* += 1;
730 decode_state.written_count += block_size;728 decode_state.written_count += block_size;
731 return block_size;729 return block_size;