From 550cae931f418bbe9fc5896d304bfe8295ce4462 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Thu, 19 Jan 2023 15:19:29 +0200 Subject: [PATCH] bench: add bench_random_number_generation.v --- .../bench/bench_random_number_generation.v | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 vlib/v/tests/bench/bench_random_number_generation.v diff --git a/vlib/v/tests/bench/bench_random_number_generation.v b/vlib/v/tests/bench/bench_random_number_generation.v new file mode 100644 index 0000000000..762dc0533d --- /dev/null +++ b/vlib/v/tests/bench/bench_random_number_generation.v @@ -0,0 +1,50 @@ +import os +import rand +import rand.wyrand +import rand.musl +import rand.pcg32 +import benchmark + +const max_iterations = os.getenv_opt('MAX_ITERATIONS') or { '1000' }.int() + +fn main() { + mut sum := 0 + mut bigsum := u64(0) + mut b := benchmark.start() + + C.srand(7868768) + for _ in 0 .. max_iterations { + sum += C.rand() + } + b.measure('C.rand called ${max_iterations} times, sum: ${sum}') + + rand.seed([u32(545123), 87834597]) + for _ in 0 .. max_iterations { + bigsum += rand.u64() + } + b.measure('rand.u64 called ${max_iterations} times, bigsum: ${bigsum}') + + bigsum = 0 + mut wy := &wyrand.WyRandRNG{} + wy.seed([u32(2345345), 8787671]) + for _ in 0 .. max_iterations { + bigsum += wy.u64() + } + b.measure('wy.u64 called ${max_iterations} times, bigsum: ${bigsum}') + + bigsum = 0 + mut mu := &musl.MuslRNG{} + mu.seed([u32(2345345)]) + for _ in 0 .. max_iterations { + bigsum += mu.u64() + } + b.measure('mu.u64 called ${max_iterations} times, bigsum: ${bigsum}') + + bigsum = 0 + mut pc := &pcg32.PCG32RNG{} + pc.seed([u32(2345345), 34345, 77634, 12381]) + for _ in 0 .. max_iterations { + bigsum += pc.u64() + } + b.measure('pc.u64 called ${max_iterations} times, bigsum: ${bigsum}') +}