Skip to content

Commit d654849

Browse files
authored
Add #VCCs and #program steps benchcomp metrics (#2410)
This commit adds two new metrics to the benchcomp "kani perf" parser. These metrics are recorded from each benchmark's output file but not currently checked for regression.
1 parent b10ef23 commit d654849

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

tools/benchcomp/benchcomp/parsers/kani_perf.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ def _get_metrics():
2525
"pat": re.compile(r"Runtime Solver: (?P<value>[-e\d\.]+)s"),
2626
"parse": float,
2727
},
28+
"removed_program_steps": {
29+
"pat": re.compile(r"slicing removed (?P<value>\d+) assignments"),
30+
"parse": int,
31+
},
32+
"number_program_steps": {
33+
"pat": re.compile(r"size of program expression: (?P<value>\d+) steps"),
34+
"parse": int,
35+
},
36+
"number_vccs": {
37+
"pat": re.compile(
38+
r"Generated \d+ VCC\(s\), (?P<value>\d+) remaining after simplification"),
39+
"parse": int,
40+
},
2841
"symex_runtime": {
2942
"pat": re.compile(r"Runtime Symex: (?P<value>[-e\d\.]+)s"),
3043
"parse": float,
@@ -41,6 +54,11 @@ def get_metrics():
4154
for metric, info in metrics.items():
4255
for field in ("pat", "parse"):
4356
info.pop(field)
57+
58+
# This is not a metric we return; it is used to find the correct value for
59+
# the number_program_steps metric
60+
metrics.pop("removed_program_steps", None)
61+
4462
return metrics
4563

4664

@@ -76,6 +94,12 @@ def main(root_dir):
7694
benchmarks[bench_name]["metrics"][metric] = parse(m["value"])
7795
break
7896

97+
for bench_name, bench_info in benchmarks.items():
98+
n_steps = bench_info["metrics"]["number_program_steps"]
99+
rm_steps = bench_info["metrics"]["removed_program_steps"]
100+
bench_info["metrics"]["number_program_steps"] = n_steps - rm_steps
101+
bench_info["metrics"].pop("removed_program_steps", None)
102+
79103
return {
80104
"metrics": get_metrics(),
81105
"benchmarks": benchmarks,

tools/benchcomp/test/test_regression.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ def _run_kani_perf_test(self, command, expected_pass):
105105
"symex_runtime": float,
106106
"verification_time": float,
107107
"success": bool,
108+
"number_program_steps": int,
109+
"number_vccs": int,
108110
}
109111

110112
all_succeeded = True

0 commit comments

Comments
 (0)