aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-28 18:30:49 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-28 18:30:49 -0800
commit77d0828179ae21f86abead5f5c58a9c7d357053c (patch)
tree7d9b5ecae07d995c63a87bfb11aa132a6dd8b4b9
parenteccd854dbc50444a3665b31f170ab94451f3cd04 (diff)
downloadbun-77d0828179ae21f86abead5f5c58a9c7d357053c.tar.gz
bun-77d0828179ae21f86abead5f5c58a9c7d357053c.tar.zst
bun-77d0828179ae21f86abead5f5c58a9c7d357053c.zip
[internal] Add debug timer
-rw-r--r--src/bun.js/node/syscall.zig5
-rw-r--r--src/output.zig30
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;
+ }
+ }
+};