Skip to documentation
SLOP

tiny.bench.Suite

Reference tiny.bench Suite

Defined in tiny.bench.

API (16)

Actions

Public operations.

Fields and members

Public fields and members.

No direct callersNo direct callstiny.benchSuite
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/bench/src/suite.zig:169

zig
pub const Suite = struct {    alloc: Allocator,    default_config: Config,    filter: ?[]const u8 = null,    clock_probe: ?timing.ClockProbe = null,    benchmarks: std.ArrayListUnmanaged(Definition) = .empty,    results: std.ArrayListUnmanaged(Result) = .empty,    pub fn init(alloc: Allocator, config: Config) Suite {        return .{ .alloc = alloc, .default_config = config };    }    pub fn deinit(self: *Suite) void {        for (self.results.items) |result| {            self.alloc.free(result.samples);            self.alloc.free(result.sample_total_ns);        }        self.results.deinit(self.alloc);        self.benchmarks.deinit(self.alloc);    }    pub fn add(self: *Suite, name: []const u8, func: BenchFn, override: anytype) !void {        try self.benchmarks.append(self.alloc, .{            .name = name,            .func = func,            .config = applyConfigOverride(self.default_config, override),        });    }    pub fn setFilter(self: *Suite, filter: ?[]const u8) void {        self.filter = filter;    }    pub fn run(self: *Suite) !void {        try self.runWithOptions(.{});    }    pub fn runWithOptions(self: *Suite, options: RunOptions) !void {        const clock_probe = try timing.probeClock();        self.clock_probe = clock_probe;        var coz_env = try CozEnv.read(self.alloc);        defer coz_env.deinit(self.alloc);        var tracy_env = try TracyEnv.read(self.alloc);        defer tracy_env.deinit(self.alloc);        var control_env = try ControlEnv.read(self.alloc);        defer control_env.deinit(self.alloc);        var coz_session: instrumentation.CozSession = .{};        try startCozSession(self.alloc, &coz_session, coz_env);        defer coz_session.deinit();        var tracy_session: instrumentation.ProfilingSession = .{};        try startTracySession(self.alloc, &tracy_session, tracy_env, self.default_config.suite_name);        defer tracy_session.deinit();        var memtrace_session: MemtraceSession = .{};        try memtrace_session.start(self.alloc);        defer memtrace_session.deinit(self.alloc);        var executed: usize = 0;        tracy.setThreadName("tiny-bench");        tracy.appInfo("tiny benchmark harness");        {            const suite_phase = phaseAt("bench.suite.run", @src());            defer suite_phase.end();            if (options.write_stdout) try output.writeHeader();            for (self.benchmarks.items) |def| {                if (!matchesFilter(def.name, self.filter)) continue;                if (!matchesFilter(def.name, control_env.filter)) continue;                const result = try runOne(                    self.alloc,                    memtrace_session.sampleAllocator(),                    memtrace_session.tracerPtr(),                    controlledDefinition(def, control_env),                    clock_probe,                );                executed += 1;                try self.results.append(self.alloc, result);                if (options.write_stdout) try output.writeResult(result);            }            if (options.write_stdout) try output.writeStdoutDoc(pretty.hardline);        }        if (options.write_env_jsonl) try self.writeEnvJsonlFile();        try finishInstrumentation(            self.alloc,            executed,            &memtrace_session,            &coz_session,            coz_env,            &tracy_session,            tracy_env,        );    }    pub fn runSilent(self: *Suite) ![]const Result {        const clock_probe = try timing.probeClock();        self.clock_probe = clock_probe;        var coz_env = try CozEnv.read(self.alloc);        defer coz_env.deinit(self.alloc);        var tracy_env = try TracyEnv.read(self.alloc);        defer tracy_env.deinit(self.alloc);        var control_env = try ControlEnv.read(self.alloc);        defer control_env.deinit(self.alloc);        var coz_session: instrumentation.CozSession = .{};        try startCozSession(self.alloc, &coz_session, coz_env);        defer coz_session.deinit();        var tracy_session: instrumentation.ProfilingSession = .{};        try startTracySession(self.alloc, &tracy_session, tracy_env, self.default_config.suite_name);        defer tracy_session.deinit();        var memtrace_session: MemtraceSession = .{};        try memtrace_session.start(self.alloc);        defer memtrace_session.deinit(self.alloc);        var executed: usize = 0;        tracy.setThreadName("tiny-bench");        tracy.appInfo("tiny benchmark harness");        {            const suite_phase = phaseAt("bench.suite.run_silent", @src());            defer suite_phase.end();            for (self.benchmarks.items) |def| {                if (!matchesFilter(def.name, self.filter)) continue;                if (!matchesFilter(def.name, control_env.filter)) continue;                const result = try runOne(                    self.alloc,                    memtrace_session.sampleAllocator(),                    memtrace_session.tracerPtr(),                    controlledDefinition(def, control_env),                    clock_probe,                );                executed += 1;                try self.results.append(self.alloc, result);            }        }        try finishInstrumentation(            self.alloc,            executed,            &memtrace_session,            &coz_session,            coz_env,            &tracy_session,            tracy_env,        );        return self.results.items;    }    pub fn writeJsonl(self: *const Suite, writer: *std.Io.Writer, options: JsonlOptions) !void {        try writeJsonlStart(self, writer, options);        for (self.results.items) |result| try writeJsonlResult(writer, options, result);        try event.writeRunEnd(writer, .{            .benches = @intCast(self.results.items.len),            .errors = 0,        });    }    pub fn writeJsonlFile(self: *const Suite, path: []const u8, options: JsonlOptions) !void {        try ensureParent(path);        var file = try sys.fs.createFile(path, .{ .truncate = true });        defer file.close(sys.fs.debugIo());        var buffer: [8192]u8 = undefined;        var writer = file.writer(sys.fs.debugIo(), &buffer);        try self.writeJsonl(&writer.interface, withOutputPath(options, path));        try writer.interface.flush();    }    pub fn appendJsonlFile(self: *const Suite, path: []const u8, options: JsonlOptions) !void {        try ensureParent(path);        var out = std.Io.Writer.Allocating.init(self.alloc);        defer out.deinit();        try self.writeJsonl(&out.writer, withOutputPath(options, path));        try sys.fs.appendFile(path, &.{out.written()});    }    fn writeEnvJsonlFile(self: *const Suite) !void {        const path = try sys.env.getOwned(self.alloc, jsonl_output_env);        defer if (path) |actual| self.alloc.free(actual);        if (path) |actual| try self.appendJsonlFile(actual, .{ .suite_name = self.default_config.suite_name });    }};

Source: lib/bench/src/root.zig:126

zig
pub const Suite = suite.Suite;
Called byCallstest sourcelib.bench.src.suitetest: suite appends JSONL filestest sourcelib.bench.src.suitetest: suite applies per-row config ov...test sourcelib.bench.src.suitetest: suite attributes prepare owner ...test sourcelib.bench.src.suitetest: suite basic runtest sourcelib.bench.src.suitetest: suite batches evals per timed s...+17 moreprivate sourcelib.bench.src.suiteapplyConfigOverrideSuiteadd
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsprivate sourcelib.bench.src.suite.SuitewriteEnvJsonlFiletest sourcelib.bench.src.suitetest: suite appends JSONL filestest sourcelib.bench.src.suitetest: suite can leave environment JSO...SuitewriteJsonlprivate sourcelib.bench.src.suiteensureParentprivate sourcelib.bench.src.suitewithOutputPathSuiteappendJsonlFile
Static calls · unresolved targets: 0 · external targets: 3.
Called byCallsNo direct callstest sourcelib.bench.src.suitetest: suite appends JSONL filestest sourcelib.bench.src.suitetest: suite applies per-row config ov...test sourcelib.bench.src.suitetest: suite attributes prepare owner ...test sourcelib.bench.src.suitetest: suite basic runtest sourcelib.bench.src.suitetest: suite batches evals per timed s...+17 moreSuitedeinit
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsNo direct callstest sourcelib.bench.src.suitetest: suite appends JSONL filestest sourcelib.bench.src.suitetest: suite applies per-row config ov...test sourcelib.bench.src.suitetest: suite attributes prepare owner ...test sourcelib.bench.src.suitetest: suite basic runtest sourcelib.bench.src.suitetest: suite batches evals per timed s...+17 moreSuiteinit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersSuiterunWithOptionsSuiterun
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.bench.src.suitetest: suite appends JSONL filestest sourcelib.bench.src.suitetest: suite applies per-row config ov...test sourcelib.bench.src.suitetest: suite attributes prepare owner ...test sourcelib.bench.src.suitetest: suite basic runtest sourcelib.bench.src.suitetest: suite batches evals per timed s...+15 moreCozSessiondeinitProfilingSessiondeinittiny.benchphaseAtprivate sourcelib.bench.src.suite.ControlEnvreadprivate sourcelib.bench.src.suite.CozEnvread+12 moreSuiterunSilent
Static calls · unresolved targets: 1 · external targets: 6.
Called byCallsSuiteruntest sourcelib.bench.src.suitetest: suite can leave environment JSO...test sourcelib.bench.src.suitetest: suite owns enabled Tracy captur...CozSessiondeinitProfilingSessiondeinittiny.benchphaseAtprivate sourcelib.bench.src.outputwriteHeaderprivate sourcelib.bench.src.outputwriteResult+16 moreSuiterunWithOptions
Static calls · unresolved targets: 1 · external targets: 6.
Called byCallsNo direct callstest sourcelib.bench.src.suitetest: suite filters benchmark definit...SuitesetFilter
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsSuiteappendJsonlFileSuitewriteJsonlFiletest sourcelib.bench.src.suitetest: suite batches evals per timed s...test sourcelib.bench.src.suitetest: suite preserves null allocation...test sourcelib.bench.src.suitetest: suite writes comparable JSONL r...test sourcelib.bench.src.suitetest: suite writes row evidence from ...private sourcelib.bench.src.suitewriteJsonlResultSuitewriteJsonl
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsNo direct callersSuitewriteJsonlprivate sourcelib.bench.src.suiteensureParentprivate sourcelib.bench.src.suitewithOutputPathSuitewriteJsonlFile
Static calls · unresolved targets: 1 · external targets: 4.

Complete caller list for Suite.add

22 direct callers.

Complete caller list for Suite.deinit

22 direct callers.

Complete caller list for Suite.init

22 direct callers.

Complete caller list for Suite.runSilent

20 direct callers.

Complete call list for Suite.runSilent

17 direct calls.

Complete call list for Suite.runWithOptions

21 direct calls.

Audit

Definitions11
Public names11
Members6
Version26.7.0
Revisiondaab053ee433