this repo has no description
13
fork

Configure Feed

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

at 8a9c2d5e1b3778f1ea43c9bd5d325cfa72016584 62 lines 2.2 kB view raw
1const std = @import("std"); 2const vaxis = @import("vaxis"); 3 4fn 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| { 9 return std.fmt.parseUnsigned(usize, val, 10); 10 } 11 return 200; 12} 13 14fn 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)); 16 const bytes_per_frame = total_bytes / iterations; 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 }, 20 ); 21} 22 23pub fn main() !void { 24 var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 25 defer _ = gpa.deinit(); 26 const allocator = gpa.allocator(); 27 28 const iterations = try parseIterations(allocator); 29 30 var vx = try vaxis.init(allocator, .{}); 31 var init_writer = std.io.Writer.Allocating.init(allocator); 32 defer init_writer.deinit(); 33 defer vx.deinit(allocator, &init_writer.writer); 34 35 const winsize = vaxis.Winsize{ .rows = 24, .cols = 80, .x_pixel = 0, .y_pixel = 0 }; 36 try vx.resize(allocator, &init_writer.writer, winsize); 37 38 const stdout = std.fs.File.stdout().deprecatedWriter(); 39 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); 46 } 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 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); 58 } 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); 62}