commit 59d0dda0803d8edd26d099025e0c0bcff5632e74 (tree)
parent bc82e0f3d3aed55165902c37271af120fcd4f858
Author: LemonBoy <thatlemon@gmail.com>
Date: Tue, 21 Jan 2020 20:58:02 +0100
Make writeByteNTimes faster and leaner
Diffstat:
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/lib/std/io/out_stream.zig b/lib/std/io/out_stream.zig
@@ -45,10 +45,14 @@ pub fn OutStream(comptime WriteError: type) type {
}
pub fn writeByteNTimes(self: *Self, byte: u8, n: usize) Error!void {
- const slice = @as(*const [1]u8, &byte)[0..];
- var i: usize = 0;
- while (i < n) : (i += 1) {
- try self.writeFn(self, slice);
+ var bytes: [256]u8 = undefined;
+ mem.set(u8, bytes[0..], byte);
+
+ var remaining: usize = n;
+ while (remaining > 0) {
+ const to_write = std.math.min(remaining, bytes.len);
+ try self.writeFn(self, bytes[0..to_write]);
+ remaining -= to_write;
}
}