11const std = @import ("std" );
2+
23const sieve = @import ("sieve.zig" );
34
4- const MEAN : f64 = 50.0 ;
5- const ARRAY_SIZE : u64 = 12 ;
6- const NUM_ITERS : u64 = 1000 ;
7- const CACHE_CAPACITY : u64 = 68 ;
8- const STD_DEV : f64 = MEAN / 3.0 ;
5+ const MEAN = 50.0 ;
6+ const ARRAY_SIZE = 12 ;
7+ const NUM_ITERS = 1000 ;
8+ const CACHE_CAPACITY = 68 ;
9+ const STD_DEV = MEAN / 3.0 ;
10+ const MAX_BUF_SIZE = 1 << 12 ;
911
1012pub fn main () ! void {
11- var gpa_state = std .heap .DebugAllocator (.{}){} ;
13+ var gpa_state : std .heap .DebugAllocator (.{}) = .init ;
1214 const gpa = gpa_state .allocator ();
13- defer if (gpa_state .deinit () == .leak ) {
14- @panic ("Memory leak has occurred!" );
15- };
15+ defer if (gpa_state .deinit () == .leak ) @panic ("Memory leaked!" );
1616
17- const std_out = std . io . getStdOut () ;
18- var buf_writer = std .io . bufferedWriter ( std_out .writer () );
19- const writer = buf_writer . writer () ;
17+ var stdout_buf : [ MAX_BUF_SIZE ] u8 = undefined ;
18+ var stdout_writer = std .fs . File . stdout () .writer (& stdout_buf );
19+ const writer = & stdout_writer . interface ;
2020
21- var prng = std .Random .DefaultPrng .init (blk : {
21+ var prng : std.Random.DefaultPrng = .init (blk : {
2222 var seed : u64 = undefined ;
2323 try std .posix .getrandom (std .mem .asBytes (& seed ));
2424 break :blk seed ;
2525 });
2626 const random = prng .random ();
2727
28- var buf : [512 ]u8 = undefined ;
29- var fixed_buf = std .heap .FixedBufferAllocator .init (buf [0 .. ] );
28+ var buf : [MAX_BUF_SIZE ]u8 = undefined ;
29+ var fixed_buf : std.heap.FixedBufferAllocator = .init (& buf );
3030 const args = try std .process .argsAlloc (fixed_buf .allocator ());
3131
32- switch (args [1 ][1 ]) {
32+ switch (args [1 ][0 ]) {
3333 's' = > try benchmarkSequence (gpa , writer ),
3434 'c' = > try benchmarkComposite (gpa , random , writer ),
3535 'n' = > try benchmarkCompositeNormal (gpa , random , writer ),
3636 else = > @panic ("Unknown benchmark!" ),
3737 }
3838
39- try buf_writer .flush ();
39+ try writer .flush ();
4040}
4141
4242fn benchmarkSequence (gpa : std.mem.Allocator , writer : anytype ) ! void {
4343 const Cache = sieve .Cache (u64 , u64 );
44- var cache = try Cache .init (gpa , CACHE_CAPACITY );
44+ var cache : Cache = try .init (gpa , CACHE_CAPACITY );
4545 defer cache .deinit (gpa );
4646
4747 var timer = try std .time .Timer .start ();
@@ -62,12 +62,12 @@ fn benchmarkSequence(gpa: std.mem.Allocator, writer: anytype) !void {
6262 _ = cache .get (num );
6363 }
6464
65- try writer .print ("Sequence: {}\n " , .{std . fmt . fmtDuration ( timer .read () - start ) });
65+ try writer .print ("Sequence: {D }\n " , .{timer .read () - start });
6666}
6767
6868fn benchmarkComposite (gpa : std.mem.Allocator , random : std.Random , writer : anytype ) ! void {
6969 const Cache = sieve .Cache (u64 , struct { [ARRAY_SIZE ]u8 , u64 });
70- var cache = try Cache .init (gpa , CACHE_CAPACITY );
70+ var cache : Cache = try .init (gpa , CACHE_CAPACITY );
7171 defer cache .deinit (gpa );
7272
7373 var timer = try std .time .Timer .start ();
@@ -79,7 +79,7 @@ fn benchmarkComposite(gpa: std.mem.Allocator, random: std.Random, writer: anytyp
7979 while (i < NUM_ITERS ) : (i += 1 ) {
8080 num = random .uintLessThan (u64 , 100 );
8181 node = try gpa .create (Cache .Node );
82- node .* = .{ .key = num , .value = .{ [ 1 ] u8 { 0 } ** ARRAY_SIZE , num } };
82+ node .* = .{ .key = num , .value = .{ @splat ( 0 ) , num } };
8383 _ = try cache .put (node );
8484 }
8585
@@ -88,12 +88,12 @@ fn benchmarkComposite(gpa: std.mem.Allocator, random: std.Random, writer: anytyp
8888 _ = cache .get (num );
8989 }
9090
91- try writer .print ("Composite: {}\n " , .{std . fmt . fmtDuration ( timer .read () - start ) });
91+ try writer .print ("Composite: {D }\n " , .{timer .read () - start });
9292}
9393
9494fn benchmarkCompositeNormal (gpa : std.mem.Allocator , random : std.Random , writer : anytype ) ! void {
9595 const Cache = sieve .Cache (u64 , struct { [ARRAY_SIZE ]u8 , u64 });
96- var cache = try Cache .init (gpa , @intFromFloat (STD_DEV ));
96+ var cache : Cache = try .init (gpa , @intFromFloat (STD_DEV ));
9797 defer cache .deinit (gpa );
9898
9999 var timer = try std .time .Timer .start ();
@@ -106,7 +106,7 @@ fn benchmarkCompositeNormal(gpa: std.mem.Allocator, random: std.Random, writer:
106106 num = @intFromFloat (random .floatNorm (f64 ) * STD_DEV + MEAN );
107107 num %= 100 ;
108108 node = try gpa .create (Cache .Node );
109- node .* = .{ .key = num , .value = .{ [ 1 ] u8 { 0 } ** ARRAY_SIZE , num } };
109+ node .* = .{ .key = num , .value = .{ @splat ( 0 ) , num } };
110110 _ = try cache .put (node );
111111 }
112112
@@ -116,5 +116,5 @@ fn benchmarkCompositeNormal(gpa: std.mem.Allocator, random: std.Random, writer:
116116 _ = cache .get (num );
117117 }
118118
119- try writer .print ("Composite Normal: {}\n " , .{std . fmt . fmtDuration ( timer .read () - start ) });
119+ try writer .print ("Composite Normal: {D }\n " , .{timer .read () - start });
120120}
0 commit comments