1const std = @import("std");
2const builtin = @import("builtin");
3const zbench = @import("zbench");
4
5const day1 = @import("day1.zig");
6const day2 = @import("day2.zig");
7const day3 = @import("day3.zig");
8const day4 = @import("day4.zig");
9const day5 = @import("day5.zig");
10const day6 = @import("day6.zig");
11
12fn day1pt1(_: std.mem.Allocator) void {
13 _ = day1.pt1(@embedFile("input/day1"));
14}
15
16fn day1pt2(_: std.mem.Allocator) void {
17 _ = day1.pt2(@embedFile("input/day1"));
18}
19
20fn day2pt1(_: std.mem.Allocator) void {
21 _ = day2.pt1(@embedFile("input/day2"));
22}
23
24fn day2pt2(_: std.mem.Allocator) void {
25 _ = day2.pt2(@embedFile("input/day2"));
26}
27
28fn day3pt1(_: std.mem.Allocator) void {
29 _ = day3.pt1(@embedFile("input/day3"));
30}
31
32fn day3pt2(_: std.mem.Allocator) void {
33 _ = day3.pt2(@embedFile("input/day3"));
34}
35
36fn day4pt1(_: std.mem.Allocator) void {
37 _ = day4.pt1(@embedFile("input/day4"));
38}
39
40fn day4pt2(_: std.mem.Allocator) void {
41 _ = day4.pt2(@embedFile("input/day4"));
42}
43
44fn day5pt1(alloc: std.mem.Allocator) void {
45 _ = day5.pt1(alloc, @embedFile("input/day5")) catch unreachable;
46}
47
48fn day5pt2(alloc: std.mem.Allocator) void {
49 _ = day5.pt2(alloc, @embedFile("input/day5")) catch unreachable;
50}
51
52fn day6pt1(_: std.mem.Allocator) void {
53 _ = day6.pt1(@embedFile("input/day6"));
54}
55
56fn day6pt2(_: std.mem.Allocator) void {
57 _ = day6.pt2(@embedFile("input/day6"));
58}
59
60pub fn main() !void {
61 var stdout = std.fs.File.stdout().writerStreaming(&.{});
62 const writer = &stdout.interface;
63
64 var bench = zbench.Benchmark.init(std.heap.page_allocator, .{});
65 defer bench.deinit();
66
67 try bench.add("Dia 1 parte 1", day1pt1, .{});
68 try bench.add("Dia 1 parte 2", day1pt2, .{});
69 try bench.add("Dia 2 parte 1", day2pt1, .{});
70 try bench.add("Dia 2 parte 2", day2pt2, .{});
71 try bench.add("Dia 3 parte 1", day3pt1, .{});
72 try bench.add("Dia 3 parte 2", day3pt2, .{});
73 try bench.add("Dia 4 parte 1", day4pt1, .{});
74 try bench.add("Dia 4 parte 2", day4pt2, .{});
75 // FIXME: this is a bug on the zbench that on debug or release safe mode it
76 // panics calculating memory used.
77 if (builtin.mode == .Debug or builtin.mode == .ReleaseSafe) {
78 try bench.add("Dia 5 parte 1", day5pt1, .{});
79 try bench.add("Dia 5 parte 2", day5pt2, .{});
80 } else {
81 try bench.add("Dia 5 parte 1", day5pt1, .{ .track_allocations = true });
82 try bench.add("Dia 5 parte 2", day5pt2, .{ .track_allocations = true });
83 }
84 try bench.add("Dia 6 parte 1", day6pt1, .{});
85 try bench.add("Dia 6 parte 2", day6pt2, .{});
86
87 try writer.writeAll("\n");
88 try bench.run(writer);
89}