summaryrefslogtreecommitdiff
path: root/bench/src/zg_width.zig
diff options
context:
space:
mode:
Diffstat (limited to 'bench/src/zg_width.zig')
-rw-r--r--bench/src/zg_width.zig33
1 files changed, 33 insertions, 0 deletions
diff --git a/bench/src/zg_width.zig b/bench/src/zg_width.zig
new file mode 100644
index 0000000..c0ce57c
--- /dev/null
+++ b/bench/src/zg_width.zig
@@ -0,0 +1,33 @@
1const std = @import("std");
2
3const DisplayWidth = @import("DisplayWidth");
4
5pub fn main() !void {
6 var args_iter = std.process.args();
7 _ = args_iter.skip();
8 const in_path = args_iter.next() orelse return error.MissingArg;
9
10 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
11 defer arena.deinit();
12 const allocator = arena.allocator();
13
14 const input = try std.fs.cwd().readFileAlloc(
15 allocator,
16 in_path,
17 std.math.maxInt(u32),
18 );
19 defer allocator.free(input);
20
21 const width_data = try DisplayWidth.DisplayWidthData.init(allocator);
22 const display_width = DisplayWidth{ .data = &width_data };
23
24 var iter = std.mem.splitScalar(u8, input, '\n');
25 var result: usize = 0;
26 var timer = try std.time.Timer.start();
27
28 while (iter.next()) |line| {
29 const width = display_width.strWidth(line);
30 result += width;
31 }
32 std.debug.print("zg DisplayWidth.strWidth: result: {}, took: {}\n", .{ result, timer.lap() / std.time.ns_per_ms });
33}