Skip to content

Commit 8b72eed

Browse files
committed
std: add warm up phase to benchmark
In my tests, whatever ran first was getting much better numbers. Additionally, add alignment requirements so that comparison is fair.
1 parent a81c0ba commit 8b72eed

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

lib/std/unicode/throughput_test.zig

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,23 @@ pub fn main() !void {
66

77
const args = try std.process.argsAlloc(std.heap.page_allocator);
88

9+
// Warm up runs
10+
var buffer0: [32767]u16 align(4096) = undefined;
11+
_ = try std.unicode.utf8ToUtf16Le(&buffer0, args[1]);
12+
_ = try std.unicode.utf8ToUtf16Le_better(&buffer0, args[1]);
13+
914
@fence(.SeqCst);
1015
var timer = try std.time.Timer.start();
1116
@fence(.SeqCst);
1217

13-
var buffer1: [32767]u16 = undefined;
18+
var buffer1: [32767]u16 align(4096) = undefined;
1419
_ = try std.unicode.utf8ToUtf16Le(&buffer1, args[1]);
1520

1621
@fence(.SeqCst);
1722
const elapsed_ns_orig = timer.lap();
1823
@fence(.SeqCst);
1924

20-
var buffer2: [32767]u16 = undefined;
25+
var buffer2: [32767] u16 align(4096) = undefined;
2126
_ = try std.unicode.utf8ToUtf16Le_better(&buffer2, args[1]);
2227

2328
@fence(.SeqCst);

0 commit comments

Comments
 (0)