From 63a51ff2e42f544fa81bdbf4ff1bf78f979e5466 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sun, 1 Sep 2024 07:50:07 +0300 Subject: [PATCH] tools: add bench programs, to check the memory usage after using m.clear() --- cmd/tools/bench/map_clear.v | 17 +++++++++++++++++ cmd/tools/bench/map_clear_runner.vsh | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 cmd/tools/bench/map_clear.v create mode 100755 cmd/tools/bench/map_clear_runner.vsh diff --git a/cmd/tools/bench/map_clear.v b/cmd/tools/bench/map_clear.v new file mode 100644 index 00000000000000..488b933a5406c2 --- /dev/null +++ b/cmd/tools/bench/map_clear.v @@ -0,0 +1,17 @@ +import benchmark + +max_iterations := arguments()[1] or { '1_000_000' }.int() +assert max_iterations > 0 +mut m := { + 123: 456 + 789: 321 +} +mut volatile sum := u64(0) +mut b := benchmark.start() +for i in 0 .. max_iterations { + m.clear() + m[i] = i * 2 + sum += u64(m.len) +} +assert m.len == 1 +b.measure('m.clear(), iterations: ${max_iterations}, sum: ${sum}') diff --git a/cmd/tools/bench/map_clear_runner.vsh b/cmd/tools/bench/map_clear_runner.vsh new file mode 100755 index 00000000000000..0c82cc82fd1659 --- /dev/null +++ b/cmd/tools/bench/map_clear_runner.vsh @@ -0,0 +1,23 @@ +#!/usr/bin/env -S v -raw-vsh-tmp-prefix tmp + +import os + +const time_fmt = '"CPU: %Us\tReal: %es\tElapsed: %E\tRAM: %MKB\t%C"' +const flags = os.getenv('FLAGS') + +unbuffer_stdout() + +start := os.args[1] or { '1_000_000' }.int() +end := os.args[2] or { '10_000_000' }.int() +step := os.args[3] or { '500_000' }.int() + +os.chdir(os.dir(@VEXE))! +vcmd := 'v ${flags} cmd/tools/bench/map_clear.v' + +println('>> start: ${start} | end: ${end} | step: ${step} | workdir: "${os.getwd()}" | flags: "${flags}" | vcmd: "${vcmd}"') +assert os.system(vcmd) == 0 + +println('running...') +for i := start; i <= end; i += step { + os.system('/usr/bin/time -f ${time_fmt} cmd/tools/bench/map_clear ${i}') == 0 +}