40 lines
875 B
Zig
40 lines
875 B
Zig
const std = @import("std");
|
|
|
|
pub const Duration = struct {
|
|
ns: u64 = 0,
|
|
|
|
pub fn div(self: Duration, rhs: u64) Duration {
|
|
return .{ .ns = self.ns / rhs };
|
|
}
|
|
|
|
pub fn hz(self: Duration) u64 {
|
|
return (1 * std.time.ns_per_s) / self.ns;
|
|
}
|
|
|
|
pub fn formatDuration(duration: Duration, writer: *std.io.Writer) std.io.Writer.Error!void {
|
|
try writer.printDuration(duration.ns, .{});
|
|
}
|
|
|
|
pub const format = formatDuration;
|
|
};
|
|
|
|
pub const Timer = struct {
|
|
inner: std.time.Timer,
|
|
|
|
pub fn start() !Timer {
|
|
return .{ .inner = try std.time.Timer.start() };
|
|
}
|
|
|
|
pub fn lap(self: *Timer) Duration {
|
|
return .{ .ns = self.inner.lap() };
|
|
}
|
|
|
|
pub fn read(self: *Timer) Duration {
|
|
return .{ .ns = self.inner.read() };
|
|
}
|
|
|
|
pub fn reset(self: *Timer) void {
|
|
self.inner.reset();
|
|
}
|
|
};
|