authorgravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-12-28 14:23:27+11:00
committergravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-12-28 14:39:38+11:00
log8b72eedc76f46b978843344f92605acb4ee4061a
tree00faf1d553f88d695276595ec5cc73bbf99faccc
parenta81c0ba2e730bd69e7c7a672fa795c46ce6b001b
signature Commit is signed but in an unrecognized format.

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 files changed, 7 insertions(+), 2 deletions(-)

lib/std/unicode/throughput_test.zig+7-2
......@@ -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);