zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit c087525edae2db147c89c83513a0778f87bee30d (tree)
parent 05032c869378e7c7e3da3a2770161266058aa320
Author: Sahnvour <sahnvour@pm.me>
Date:   Sun, 28 Jul 2019 18:46:40 +0200

pdb: improved stream reading performance, printing stack trace from a stage1 crash is now 10x faster

Diffstat:
Mstd/pdb.zig | 16++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/std/pdb.zig b/std/pdb.zig @@ -661,7 +661,6 @@ const MsfStream = struct { } fn read(self: *MsfStream, buffer: []u8) !usize { - var block_id = @intCast(usize, self.pos / self.block_size); var block = self.blocks[block_id]; var offset = self.pos % self.block_size; @@ -671,11 +670,12 @@ const MsfStream = struct { const in = &file_stream.stream; var size: usize = 0; - for (buffer) |*byte| { - byte.* = try in.readByte(); - - offset += 1; - size += 1; + var rem_buffer = buffer; + while (size < buffer.len) { + const size_to_read = math.min(self.block_size - offset, rem_buffer.len); + size += try in.read(rem_buffer[0..size_to_read]); + rem_buffer = buffer[size..]; + offset += size_to_read; // If we're at the end of a block, go to the next one. if (offset == self.block_size) { @@ -686,8 +686,8 @@ const MsfStream = struct { } } - self.pos += size; - return size; + self.pos += buffer.len; + return buffer.len; } fn seekBy(self: *MsfStream, len: i64) !void {