1diff --git a/build.zig b/build.zig
2index 81cd3afc991dfa73518b812c85fd668b3b02860d..738afe9a568f65f093a2f2d25eedd91496025cc2 100644
3--- a/build.zig
4+++ b/build.zig
5@@ -4,6 +4,9 @@ pub fn build(b: *std.Build) void {
6 const target = b.standardTargetOptions(.{});
7 const optimize = b.standardOptimizeOption(.{});
8
9+ const opts = .{ .target = target, .optimize = optimize };
10+ const zbench_module = b.dependency("zbench", opts).module("zbench");
11+
12 const exe = b.addExecutable(.{
13 .name = "aoc2024",
14 .root_module = b.createModule(.{
15@@ -14,12 +17,29 @@ .single_threaded = true,
16 }),
17 });
18
19+ const bench = b.addExecutable(.{
20+ .name = "bench",
21+ .root_module = b.createModule(.{
22+ .root_source_file = b.path("src/bench.zig"),
23+ .target = target,
24+ .optimize = optimize,
25+ .single_threaded = true,
26+ }),
27+ });
28+
29+ bench.root_module.addImport("zbench", zbench_module);
30+
31 b.installArtifact(exe);
32+ b.installArtifact(bench);
33
34 const run_step = b.step("run", "Run the app");
35+ const bench_step = b.step("bench", "Run the bench");
36
37 const run_cmd = b.addRunArtifact(exe);
38 run_step.dependOn(&run_cmd.step);
39+
40+ const bench_cmd = b.addRunArtifact(bench);
41+ bench_step.dependOn(&bench_cmd.step);
42
43 run_cmd.step.dependOn(b.getInstallStep());
44
45@@ -35,5 +55,4 @@ const run_exe_tests = b.addRunArtifact(exe_tests);
46
47 const test_step = b.step("test", "Run tests");
48 test_step.dependOn(&run_exe_tests.step);
49-
50 }
51diff --git a/build.zig.zon b/build.zig.zon
52index 9443f9672feda35aeab4b101200627c247bf1daa..c15561371fd911cc82329d0e87bcec630ab8e43c 100644
53--- a/build.zig.zon
54+++ b/build.zig.zon
55@@ -4,6 +4,10 @@ .version = "0.0.0",
56 .minimum_zig_version = "0.15.1",
57 .fingerprint = 0x25105d439732947a,
58 .dependencies = .{
59+ .zbench = .{
60+ .url = "https://github.com/hendriknielaender/zbench/archive/3268a23da82231f1bd2c064de7fdf6fb7056126f.tar.gz",
61+ .hash = "zbench-0.11.2-YTdc7zolAQDlBF9i0ywXIvDjafL3Kg27S-aFUq6dU5zy",
62+ },
63 },
64 .paths = .{
65 "build.zig",
66diff --git a/src/bench.zig b/src/bench.zig
67new file mode 100644
68index 0000000000000000000000000000000000000000..0c09c8f541ad2bace508157d8f0064cee806960f
69--- /dev/null
70+++ b/src/bench.zig
71@@ -0,0 +1,59 @@
72+const std = @import("std");
73+const zbench = @import("zbench");
74+
75+const day1 = @import("day1.zig");
76+const day2 = @import("day2.zig");
77+const day3 = @import("day3.zig");
78+const day4 = @import("day4.zig");
79+
80+fn day1pt1(_: std.mem.Allocator) void {
81+ _ = day1.pt1(@embedFile("input/day1"));
82+}
83+
84+fn day1pt2(_: std.mem.Allocator) void {
85+ _ = day1.pt2(@embedFile("input/day1"));
86+}
87+
88+fn day2pt1(_: std.mem.Allocator) void {
89+ _ = day2.pt1(@embedFile("input/day2"));
90+}
91+
92+fn day2pt2(_: std.mem.Allocator) void {
93+ _ = day2.pt2(@embedFile("input/day2"));
94+}
95+
96+fn day3pt1(_: std.mem.Allocator) void {
97+ _ = day3.pt1(@embedFile("input/day3"));
98+}
99+
100+fn day3pt2(_: std.mem.Allocator) void {
101+ _ = day3.pt2(@embedFile("input/day3"));
102+}
103+
104+fn day4pt1(_: std.mem.Allocator) void {
105+ _ = day4.pt1(@embedFile("input/day4"));
106+}
107+
108+fn day4pt2(_: std.mem.Allocator) void {
109+ _ = day4.pt2(@embedFile("input/day4"));
110+}
111+
112+pub fn main() !void {
113+ var stdout = std.fs.File.stdout().writerStreaming(&.{});
114+ const writer = &stdout.interface;
115+
116+ var bench = zbench.Benchmark.init(std.heap.page_allocator, .{});
117+ defer bench.deinit();
118+
119+ try bench.add("Dia 1 parte 1", day1pt1, .{});
120+ try bench.add("Dia 1 parte 2", day1pt2, .{});
121+ try bench.add("Dia 2 parte 1", day2pt1, .{});
122+ try bench.add("Dia 2 parte 2", day2pt2, .{});
123+ try bench.add("Dia 3 parte 1", day3pt1, .{});
124+ try bench.add("Dia 3 parte 2", day3pt2, .{});
125+ try bench.add("Dia 4 parte 1", day4pt1, .{});
126+ try bench.add("Dia 4 parte 2", day4pt2, .{});
127+
128+ try writer.writeAll("\n");
129+ try bench.run(writer);
130+}