authorgravatar for frmdstryr@protonmail.comfrmdstryr <frmdstryr@protonmail.com> 2019-12-10 13:44:59-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-12-10 13:44:59-05:00
logf30af12bea0d55971dac37d8891bd9717158d73e
tree797028f6518514ce058e34b893ac6d4e9880aa27
parent5ada11449af8dac711bb977662ad5738fde44c14

Add hotpath for BufferedOutStream (#3858)

* Add hotpath for BufferedOutStream

1 files changed, 10 insertions(+), 1 deletions(-)

lib/std/io.zig+10-1
...@@ -592,7 +592,16 @@ pub fn BufferedOutStreamCustom(comptime buffer_size: usize, comptime OutStreamEr...@@ -592,7 +592,16 @@ pub fn BufferedOutStreamCustom(comptime buffer_size: usize, comptime OutStreamEr
592 fn writeFn(out_stream: *Stream, bytes: []const u8) Error!void {592 fn writeFn(out_stream: *Stream, bytes: []const u8) Error!void {
593 const self = @fieldParentPtr(Self, "stream", out_stream);593 const self = @fieldParentPtr(Self, "stream", out_stream);
594594
595 if (bytes.len >= self.buffer.len) {595 if (bytes.len == 1) {
596 // This is not required logic but a shorter path
597 // for single byte writes
598 self.buffer[self.index] = bytes[0];
599 self.index += 1;
600 if (self.index == buffer_size) {
601 try self.flush();
602 }
603 return;
604 } else if (bytes.len >= self.buffer.len) {
596 try self.flush();605 try self.flush();
597 return self.unbuffered_out_stream.write(bytes);606 return self.unbuffered_out_stream.write(bytes);
598 }607 }