this repo has no description
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

update benchmark for 0.16

authored by

Jeffrey C. Ollie and committed by
Tim Culverhouse
4445d39f 93ef9797

+48 -36
+48 -36
bench/bench.zig
··· 1 1 const std = @import("std"); 2 2 const vaxis = @import("vaxis"); 3 3 4 - fn parseIterations(allocator: std.mem.Allocator) !usize { 5 - var args = try std.process.argsWithAllocator(allocator); 6 - defer args.deinit(); 7 - _ = args.next(); 8 - if (args.next()) |val| { 4 + fn parseIterations(allocator: std.mem.Allocator, args: std.process.Args) !usize { 5 + var it = try args.iterateAllocator(allocator); 6 + defer it.deinit(); 7 + _ = it.next(); 8 + if (it.next()) |val| { 9 9 return std.fmt.parseUnsigned(usize, val, 10); 10 10 } 11 11 return 200; 12 12 } 13 13 14 - fn printResults(writer: anytype, label: []const u8, iterations: usize, elapsed_ns: u64, total_bytes: usize) !void { 15 - const ns_per_frame = elapsed_ns / @as(u64, @intCast(iterations)); 14 + fn printResults(writer: *std.Io.Writer, label: []const u8, iterations: usize, elapsed: std.Io.Duration, total_bytes: u64) !void { 15 + const ns_per_frame = @divTrunc(elapsed.toNanoseconds(), iterations); 16 16 const bytes_per_frame = total_bytes / iterations; 17 17 try writer.print( 18 - "{s}: frames={d} total_ns={d} ns/frame={d} bytes={d} bytes/frame={d}\n", 19 - .{ label, iterations, elapsed_ns, ns_per_frame, total_bytes, bytes_per_frame }, 18 + "{s}: frames={d} total_time={f} ns/frame={d} bytes={d} bytes/frame={d}\n", 19 + .{ label, iterations, elapsed, ns_per_frame, total_bytes, bytes_per_frame }, 20 20 ); 21 21 } 22 22 23 - pub fn main() !void { 24 - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 25 - defer _ = gpa.deinit(); 26 - const allocator = gpa.allocator(); 23 + pub fn main(init: std.process.Init) !void { 24 + const io = init.io; 25 + const allocator = init.gpa; 27 26 28 - const iterations = try parseIterations(allocator); 27 + const iterations = try parseIterations(allocator, init.minimal.args); 29 28 30 - var vx = try vaxis.init(allocator, .{}); 31 - var init_writer = std.io.Writer.Allocating.init(allocator); 29 + var vx = try vaxis.init(io, allocator, init.environ_map, .{}); 30 + var init_writer: std.Io.Writer.Allocating = .init(allocator); 32 31 defer init_writer.deinit(); 33 32 defer vx.deinit(allocator, &init_writer.writer); 34 33 35 34 const winsize = vaxis.Winsize{ .rows = 24, .cols = 80, .x_pixel = 0, .y_pixel = 0 }; 36 35 try vx.resize(allocator, &init_writer.writer, winsize); 37 36 38 - const stdout = std.fs.File.stdout().deprecatedWriter(); 37 + const stdout_file: std.Io.File = .stdout(); 38 + var stdout_buf: [1024]u8 = undefined; 39 + var stdout_writer = stdout_file.writer(io, &stdout_buf); 40 + const stdout = &stdout_writer.interface; 39 41 40 - var idle_writer = std.io.Writer.Allocating.init(allocator); 41 - defer idle_writer.deinit(); 42 - var timer = try std.time.Timer.start(); 43 - var i: usize = 0; 44 - while (i < iterations) : (i += 1) { 45 - try vx.render(&idle_writer.writer); 42 + { 43 + var buf: [1024]u8 = undefined; 44 + var idle_writer: std.Io.Writer.Discarding = .init(&buf); 45 + var timer: std.Io.Timestamp = .now(io, .real); 46 + var i: usize = 0; 47 + while (i < iterations) : (i += 1) { 48 + try vx.render(&idle_writer.writer); 49 + } 50 + const idle_ns = timer.untilNow(io, .real); 51 + const idle_bytes = idle_writer.fullCount(); 52 + try printResults(stdout, "idle", iterations, idle_ns, idle_bytes); 46 53 } 47 - const idle_ns = timer.read(); 48 - const idle_bytes: usize = idle_writer.writer.end; 49 - try printResults(stdout, "idle", iterations, idle_ns, idle_bytes); 50 54 51 - var dirty_writer = std.io.Writer.Allocating.init(allocator); 52 - defer dirty_writer.deinit(); 53 - timer.reset(); 54 - i = 0; 55 - while (i < iterations) : (i += 1) { 56 - vx.queueRefresh(); 57 - try vx.render(&dirty_writer.writer); 55 + { 56 + var buf: [1024]u8 = undefined; 57 + var dirty_writer: std.Io.Writer.Discarding = .init(&buf); 58 + var timer: std.Io.Timestamp = .now(io, .real); 59 + var i: usize = 0; 60 + while (i < iterations) : (i += 1) { 61 + vx.queueRefresh(); 62 + try vx.render(&dirty_writer.writer); 63 + } 64 + const dirty_ns = timer.untilNow(io, .real); 65 + const dirty_bytes = dirty_writer.fullCount(); 66 + try printResults(stdout, "dirty", iterations, dirty_ns, dirty_bytes); 58 67 } 59 - const dirty_ns = timer.read(); 60 - const dirty_bytes: usize = dirty_writer.writer.end; 61 - try printResults(stdout, "dirty", iterations, dirty_ns, dirty_bytes); 68 + 69 + try stdout.flush(); 70 + } 71 + 72 + test { 73 + std.testing.refAllDecls(@This()); 62 74 }