Thanks to the contribution of @CrownedPhoenix we now have support for tagging parametrised benchmarks which allows for nicer output without having to change the benchmark name based on the paramterization, e.g.:
[50, 100, 1000].forEach { parameter in
Benchmark("Parameterized",
configuration: .init(tags: ["myParameter" : parameter.description])) { benchmark in
for _ in benchmark.scaledIterations {
blackHole(Int.random(in: 1 ... parameter))
}
}
}
We can then run all the paramterized benchmarks with:
swift package benchmark --filter "Parameterized"
Gives output:
==================
Running Benchmarks
==================
100% [------------------------------------------------------------] ETA: 00:00:00 | Basic:Parameterized (myParameter: 100)
100% [------------------------------------------------------------] ETA: 00:00:00 | Basic:Parameterized (myParameter: 1000)
100% [------------------------------------------------------------] ETA: 00:00:00 | Basic:Parameterized (myParameter: 50)
=====================================================================================================
Baseline 'Current_run'
=====================================================================================================
Host 'ice.local' with 20 'arm64' processors with 128 GB memory, running:
Darwin Kernel Version 24.0.0: Mon Aug 12 20:51:54 PDT 2024; root:xnu-11215.1.10~2/RELEASE_ARM64_T6000
=====
Basic
=====
Parameterized (myParameter: 100)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโ
โ Metric โ p0 โ p25 โ p50 โ p75 โ p90 โ p99 โ p100 โ Samples โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโก
โ Instructions * โ 1506 โ 1567 โ 1567 โ 1567 โ 1567 โ 4499 โ 9709 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Malloc (total) * โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Memory (resident peak) (M) โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Throughput (# / s) (K) โ 1848 โ 1601 โ 1601 โ 1601 โ 1502 โ 1144 โ 110 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (total CPU) (ns) * โ 2374 โ 2459 โ 2501 โ 2541 โ 2667 โ 3625 โ 62708 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (wall clock) (ns) * โ 541 โ 625 โ 625 โ 625 โ 666 โ 875 โ 9125 โ 31531 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโ
Parameterized (myParameter: 1000)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโ
โ Metric โ p0 โ p25 โ p50 โ p75 โ p90 โ p99 โ p100 โ Samples โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโก
โ Instructions * โ 1558 โ 1567 โ 1567 โ 1567 โ 1567 โ 4499 โ 7851 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Malloc (total) * โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Memory (resident peak) (M) โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Throughput (# / s) (K) โ 1848 โ 1601 โ 1601 โ 1601 โ 1500 โ 1043 โ 86 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (total CPU) (ns) * โ 2374 โ 2459 โ 2501 โ 2585 โ 2751 โ 4291 โ 26667 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (wall clock) (ns) * โ 541 โ 625 โ 625 โ 625 โ 667 โ 959 โ 11625 โ 31118 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโ
Parameterized (myParameter: 50)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโคโโโโโโโโโโ
โ Metric โ p0 โ p25 โ p50 โ p75 โ p90 โ p99 โ p100 โ Samples โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโก
โ Instructions * โ 1558 โ 1567 โ 1567 โ 1567 โ 1567 โ 4499 โ 11015 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Malloc (total) * โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 0 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Memory (resident peak) (M) โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 12 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Throughput (# / s) (K) โ 2000 โ 1601 โ 1601 โ 1601 โ 1500 โ 1093 โ 94 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (total CPU) (ns) * โ 2458 โ 2543 โ 2583 โ 2625 โ 2751 โ 3625 โ 12541 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโโค
โ Time (wall clock) (ns) * โ 500 โ 625 โ 625 โ 625 โ 667 โ 916 โ 10625 โ 31370 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโงโโโโโโโโโโ