From e52088c2d60afa08040fcf4394ad6aa92e696ef2 Mon Sep 17 00:00:00 2001 From: ahbejarano Date: Wed, 27 Aug 2025 08:15:19 +0200 Subject: [PATCH 1/7] Upgrade to zig 0.15.1 --- build.zig.zon | 2 +- src/benchmark.zig | 48 +++++++++++++++++++++++------------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 81a1b0d..e06308d 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -2,7 +2,7 @@ .name = .zmath, .fingerprint = 0xfd23d422bd223cc2, .version = "0.11.0-dev", - .minimum_zig_version = "0.14.0", + .minimum_zig_version = "0.15.1", .paths = .{ "build.zig", "build.zig.zon", diff --git a/src/benchmark.zig b/src/benchmark.zig index c85b59b..75b6027 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -82,20 +82,20 @@ noinline fn mat4MulBenchmark(allocator: std.mem.Allocator, comptime count: compt std.debug.print("\n", .{}); std.debug.print("{s:>42} - ", .{"matrix mul benchmark (AOS)"}); - var data0 = std.ArrayList([16]f32).init(allocator); - defer data0.deinit(); - var data1 = std.ArrayList([16]f32).init(allocator); - defer data1.deinit(); + var data0 = try std.ArrayList([16]f32).initCapacity(allocator, 0); + defer data0.deinit(allocator); + var data1 = try std.ArrayList([16]f32).initCapacity(allocator, 0); + defer data1.deinit(allocator); var i: usize = 0; while (i < 64) : (i += 1) { - try data0.append([16]f32{ + try data0.append(allocator, [16]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), }); - try data1.append([16]f32{ + try data1.append(allocator, [16]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), random.float(f32), @@ -175,15 +175,15 @@ noinline fn mat4MulBenchmark(allocator: std.mem.Allocator, comptime count: compt noinline fn cross3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"cross3, scale, bias benchmark (AOS)"}); - var data0 = std.ArrayList([3]f32).init(allocator); - defer data0.deinit(); - var data1 = std.ArrayList([3]f32).init(allocator); - defer data1.deinit(); + var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + defer data0.deinit(allocator); + var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + defer data1.deinit(allocator); var i: usize = 0; while (i < 256) : (i += 1) { - try data0.append([3]f32{ random.float(f32), random.float(f32), random.float(f32) }); - try data1.append([3]f32{ random.float(f32), random.float(f32), random.float(f32) }); + try data0.append(allocator, [3]f32{ random.float(f32), random.float(f32), random.float(f32) }); + try data1.append(allocator, [3]f32{ random.float(f32), random.float(f32), random.float(f32) }); } // Warmup, fills L1 cache. @@ -245,15 +245,15 @@ noinline fn cross3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime coun noinline fn cross3Dot3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"cross3, dot3, scale, bias benchmark (AOS)"}); - var data0 = std.ArrayList([3]f32).init(allocator); - defer data0.deinit(); - var data1 = std.ArrayList([3]f32).init(allocator); - defer data1.deinit(); + var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + defer data0.deinit(allocator); + var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + defer data1.deinit(allocator); var i: usize = 0; while (i < 256) : (i += 1) { - try data0.append([3]f32{ random.float(f32), random.float(f32), random.float(f32) }); - try data1.append([3]f32{ random.float(f32), random.float(f32), random.float(f32) }); + try data0.append(allocator, [3]f32{ random.float(f32), random.float(f32), random.float(f32) }); + try data1.append(allocator, [3]f32{ random.float(f32), random.float(f32), random.float(f32) }); } // Warmup, fills L1 cache. @@ -316,15 +316,15 @@ noinline fn cross3Dot3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime noinline fn quatBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"quaternion mul benchmark (AOS)"}); - var data0 = std.ArrayList([4]f32).init(allocator); - defer data0.deinit(); - var data1 = std.ArrayList([4]f32).init(allocator); - defer data1.deinit(); + var data0 = try std.ArrayList([4]f32).initCapacity(allocator, 0); + defer data0.deinit(allocator); + var data1 = try std.ArrayList([4]f32).initCapacity(allocator, 0); + defer data1.deinit(allocator); var i: usize = 0; while (i < 256) : (i += 1) { - try data0.append([4]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32) }); - try data1.append([4]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32) }); + try data0.append(allocator, [4]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32) }); + try data1.append(allocator, [4]f32{ random.float(f32), random.float(f32), random.float(f32), random.float(f32) }); } // Warmup, fills L1 cache. From 9a94e844e4007106910332a34698e3821cae0ad0 Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:01:12 +0100 Subject: [PATCH 2/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index 75b6027..077f92e 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -82,9 +82,9 @@ noinline fn mat4MulBenchmark(allocator: std.mem.Allocator, comptime count: compt std.debug.print("\n", .{}); std.debug.print("{s:>42} - ", .{"matrix mul benchmark (AOS)"}); - var data0 = try std.ArrayList([16]f32).initCapacity(allocator, 0); + var data0 = try std.ArrayList([16]f32).initCapacity(allocator, 64); defer data0.deinit(allocator); - var data1 = try std.ArrayList([16]f32).initCapacity(allocator, 0); + var data1 = try std.ArrayList([16]f32).initCapacity(allocator, 64); defer data1.deinit(allocator); var i: usize = 0; From 3ec709af556b2bbe78ca3de1d97e959953ff34bb Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:01:21 +0100 Subject: [PATCH 3/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index 077f92e..ac6847e 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -175,9 +175,9 @@ noinline fn mat4MulBenchmark(allocator: std.mem.Allocator, comptime count: compt noinline fn cross3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"cross3, scale, bias benchmark (AOS)"}); - var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 256); defer data0.deinit(allocator); - var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 256); defer data1.deinit(allocator); var i: usize = 0; From 3a6b5d427e19a31e5867afe9d59965707ba0943a Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:01:27 +0100 Subject: [PATCH 4/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index ac6847e..d347e58 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -245,9 +245,9 @@ noinline fn cross3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime coun noinline fn cross3Dot3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"cross3, dot3, scale, bias benchmark (AOS)"}); - var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 256); defer data0.deinit(allocator); - var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 0); + var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 256); defer data1.deinit(allocator); var i: usize = 0; From a847d501b3fd0f3e55b5a7d9d7f5fb94597158a6 Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:01:51 +0100 Subject: [PATCH 5/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index d347e58..df1003c 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -316,9 +316,9 @@ noinline fn cross3Dot3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime noinline fn quatBenchmark(allocator: std.mem.Allocator, comptime count: comptime_int) !void { std.debug.print("{s:>42} - ", .{"quaternion mul benchmark (AOS)"}); - var data0 = try std.ArrayList([4]f32).initCapacity(allocator, 0); + var data0 = try std.ArrayList([4]f32).initCapacity(allocator, 256); defer data0.deinit(allocator); - var data1 = try std.ArrayList([4]f32).initCapacity(allocator, 0); + var data1 = try std.ArrayList([4]f32).initCapacity(allocator, 256); defer data1.deinit(allocator); var i: usize = 0; From f044ffa91050044ccd78fa9f6c74c576c9218e19 Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:08:29 +0100 Subject: [PATCH 6/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index df1003c..5939c29 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -83,9 +83,9 @@ noinline fn mat4MulBenchmark(allocator: std.mem.Allocator, comptime count: compt std.debug.print("{s:>42} - ", .{"matrix mul benchmark (AOS)"}); var data0 = try std.ArrayList([16]f32).initCapacity(allocator, 64); - defer data0.deinit(allocator); + defer data0.deinit(); var data1 = try std.ArrayList([16]f32).initCapacity(allocator, 64); - defer data1.deinit(allocator); + defer data1.deinit(); var i: usize = 0; while (i < 64) : (i += 1) { From 6e2f3d0cc053d89175811fc736780dd9bc1d8bf2 Mon Sep 17 00:00:00 2001 From: Chris Heyes <22148308+hazeycode@users.noreply.github.com> Date: Sun, 31 Aug 2025 16:08:48 +0100 Subject: [PATCH 7/7] benchmark: prealloc arrays Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/benchmark.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/benchmark.zig b/src/benchmark.zig index 5939c29..775a1fc 100644 --- a/src/benchmark.zig +++ b/src/benchmark.zig @@ -176,9 +176,9 @@ noinline fn cross3ScaleBiasBenchmark(allocator: std.mem.Allocator, comptime coun std.debug.print("{s:>42} - ", .{"cross3, scale, bias benchmark (AOS)"}); var data0 = try std.ArrayList([3]f32).initCapacity(allocator, 256); - defer data0.deinit(allocator); + defer data0.deinit(); var data1 = try std.ArrayList([3]f32).initCapacity(allocator, 256); - defer data1.deinit(allocator); + defer data1.deinit(); var i: usize = 0; while (i < 256) : (i += 1) {