aoc2025 @ 5531d2f5162b07d9a1eb9382b65f1f095d1fc61a

  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+}