diff --git a/build.zig b/build.zig index 23132bd..73f481f 100644 --- a/build.zig +++ b/build.zig @@ -63,6 +63,7 @@ fn setupExamples(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built "bubble_sort", "hooks", "json", + "memory_tracking", "parameterised", "progress", "sleep", diff --git a/examples/memory_tracking.zig b/examples/memory_tracking.zig new file mode 100644 index 0000000..21c41be --- /dev/null +++ b/examples/memory_tracking.zig @@ -0,0 +1,25 @@ +const std = @import("std"); +const zbench = @import("zbench"); + +fn myBenchmark(allocator: std.mem.Allocator) void { + for (0..2000) |_| { + const buf = allocator.alloc(u8, 512) catch @panic("OOM"); + defer allocator.free(buf); + } +} + +test "bench test basic" { + const stdout = std.io.getStdOut().writer(); + var bench = zbench.Benchmark.init(std.testing.allocator, .{ + .iterations = 64, + }); + defer bench.deinit(); + + try bench.add("My Benchmark 1", myBenchmark, .{}); + try bench.add("My Benchmark 2", myBenchmark, .{ + .track_allocations = true, + }); + + try stdout.writeAll("\n"); + try bench.run(stdout); +} diff --git a/zbench.zig b/zbench.zig index 2469afa..dd4c251 100644 --- a/zbench.zig +++ b/zbench.zig @@ -243,10 +243,10 @@ pub const Benchmark = struct { /// Run all benchmarks using an iterator, collecting progress information /// incrementally. - pub fn iterator(self: Benchmark) !Iterator { + pub fn iterator(self: *const Benchmark) !Iterator { return Iterator{ .allocator = self.allocator, - .b = &self, + .b = self, .remaining = self.benchmarks.items, .runner = null, };