diff options
author | Ori Bernstein <ori@eigenstate.org> | 2017-09-04 02:58:44 -0700 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2017-09-04 02:58:54 -0700 |
commit | 7ef09f3db883c42d01e3b1d80f0d2da6ceff9913 (patch) | |
tree | af370bd4f281a680b9793034f3b5baee1aa43471 /bench/copious-allocs.myr | |
parent | 40d6f7b5cc0cb9e5de1675a1441ad0dfc0a66bda (diff) | |
download | mc-7ef09f3db883c42d01e3b1d80f0d2da6ceff9913.tar.gz |
Modernize benchmarks.
Diffstat (limited to 'bench/copious-allocs.myr')
-rw-r--r-- | bench/copious-allocs.myr | 73 |
1 files changed, 48 insertions, 25 deletions
diff --git a/bench/copious-allocs.myr b/bench/copious-allocs.myr index 7b02594..ca450a7 100644 --- a/bench/copious-allocs.myr +++ b/bench/copious-allocs.myr @@ -1,37 +1,60 @@ use std +use testr type blob = struct x : int[10] ;; const main = { + testr.bench([ + [.name="alloc-one", .fn=alloc_one], + [.name="allocmany-fwdfwd", .fn=alloc_fwdfwd], + [.name="allocmany-fwdrev", .fn=alloc_fwdrev], + [.name="allocmany-fwdrand", .fn=alloc_fwdrand], + ][:]) +} + +const alloc_one = {ctx + var a : int# + a = std.alloc() + std.free(a) +} + +const alloc_fwdfwd = {ctx + var a : blob#[10000] + + /* alloc forwards, dealloc forwards */ + for var i = 0; i < a.len; i++ + a[i] = std.alloc() + ;; + for var i = 0; i < a.len; i++ + std.free(a[i]) + ;; + +} + +const alloc_fwdrev = {ctx var a : blob#[10000] - for var j = 0; j < 100; j++ - /* alloc forwards, dealloc forwards */ - for var i = 0; i < a.len; i++ - a[i] = std.alloc() - ;; - for var i = 0; i < a.len; i++ - std.free(a[i]) - ;; - - /* alloc forwards, dealloc backwards */ - for var i = 0; i < a.len; i++ - a[i] = std.alloc() - ;; - for var i = a.len; i > 0; i-- - std.free(a[i - 1]) - ;; - - /* alloc forwards, dealloc randomly */ - for var i = 0; i < a.len; i++ - a[i] = std.alloc() - ;; - shuffle(a[:]) - for var i = a.len; i > 0; i-- - std.free(a[i - 1]) - ;; + /* alloc forwards, dealloc backwards */ + for var i = 0; i < a.len; i++ + a[i] = std.alloc() + ;; + for var i = a.len; i > 0; i-- + std.free(a[i - 1]) + ;; +} + +const alloc_fwdrand = {ctx + var a : blob#[10000] + + /* alloc forwards, dealloc randomly */ + for var i = 0; i < a.len; i++ + a[i] = std.alloc() + ;; + shuffle(a[:]) + for var i = a.len; i > 0; i-- + std.free(a[i - 1]) ;; } |