diff options
author | 2022-11-28 18:30:49 -0800 | |
---|---|---|
committer | 2022-11-28 18:30:49 -0800 | |
commit | 77d0828179ae21f86abead5f5c58a9c7d357053c (patch) | |
tree | 7d9b5ecae07d995c63a87bfb11aa132a6dd8b4b9 | |
parent | eccd854dbc50444a3665b31f170ab94451f3cd04 (diff) | |
download | bun-77d0828179ae21f86abead5f5c58a9c7d357053c.tar.gz bun-77d0828179ae21f86abead5f5c58a9c7d357053c.tar.zst bun-77d0828179ae21f86abead5f5c58a9c7d357053c.zip |
[internal] Add debug timer
-rw-r--r-- | src/bun.js/node/syscall.zig | 5 | ||||
-rw-r--r-- | src/output.zig | 30 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/bun.js/node/syscall.zig b/src/bun.js/node/syscall.zig index 9d5b06540..cb423c2f5 100644 --- a/src/bun.js/node/syscall.zig +++ b/src/bun.js/node/syscall.zig @@ -326,11 +326,12 @@ pub fn pwrite(fd: os.fd_t, bytes: []const u8, offset: i64) Maybe(usize) { } pub fn read(fd: os.fd_t, buf: []u8) Maybe(usize) { + const debug_timer = bun.Output.DebugTimer.start(); const adjusted_len = @minimum(buf.len, max_count); if (comptime Environment.isMac) { const rc = system.@"read$NOCANCEL"(fd, buf.ptr, adjusted_len); - log("read({d}, {d}) = {d}", .{ fd, adjusted_len, rc }); + log("read({d}, {d}) = {d} ({any})", .{ fd, adjusted_len, rc, debug_timer }); if (Maybe(usize).errnoSys(rc, .read)) |err| { return err; @@ -339,7 +340,7 @@ pub fn read(fd: os.fd_t, buf: []u8) Maybe(usize) { } else { while (true) { const rc = sys.read(fd, buf.ptr, adjusted_len); - log("read({d}, {d}) = {d}", .{ fd, adjusted_len, rc }); + log("read({d}, {d}) = {d} ({any})", .{ fd, adjusted_len, rc, debug_timer }); if (Maybe(usize).errnoSysFd(rc, .read, fd)) |err| { if (err.getErrno() == .INTR) continue; diff --git a/src/output.zig b/src/output.zig index d6ba81a3b..55cd16677 100644 --- a/src/output.zig +++ b/src/output.zig @@ -617,3 +617,33 @@ pub fn printError(comptime fmt: string, args: anytype) void { std.fmt.format(source.error_stream.writer(), fmt, args) catch {}; } } + +pub const DebugTimer = struct { + timer: @import("global.zig").DebugOnly(std.time.Timer) = undefined, + + pub fn start() DebugTimer { + if (comptime Environment.isDebug) { + return DebugTimer{ + .timer = std.time.Timer.start() catch unreachable, + }; + } else { + return .{}; + } + } + + pub const WriteError = error{}; + + pub fn format(self: DebugTimer, comptime _: []const u8, opts: std.fmt.FormatOptions, writer_: anytype) WriteError!void { + if (comptime Environment.isDebug) { + var timer = self.timer; + var _opts = opts; + _opts.precision = 3; + std.fmt.formatFloatDecimal( + @floatCast(f64, @intToFloat(f128, timer.read()) / std.time.ns_per_ms), + _opts, + writer_, + ) catch unreachable; + writer_.writeAll("ms") catch unreachable; + } + } +}; |