Skip to content

Commit 4be0524

Browse files
committed
make benchmark smoke threshold checks float-safe
1 parent d173116 commit 4be0524

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

scripts/bench_smoke_check.sh

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ done < <(
6464

6565
failures=0
6666

67+
float_delta() {
68+
awk -v actual="$1" -v limit="$2" 'BEGIN { printf "%.4f", actual - limit }'
69+
}
70+
71+
float_exceeds() {
72+
awk -v actual="$1" -v limit="$2" 'BEGIN { exit (actual > limit) ? 0 : 1 }'
73+
}
74+
6775
echo
6876
printf "%-40s %12s %12s %12s %12s %12s %14s\n" "Benchmark" "ns/op" "max_ns/op" "delta_ns" "allocs/op" "max_allocs" "delta_allocs"
6977
for bench in "${benchmarks[@]}"; do
@@ -78,15 +86,15 @@ for bench in "${benchmarks[@]}"; do
7886
continue
7987
fi
8088

81-
ns_delta=$((ns - max_ns_value))
82-
allocs_delta=$((allocs - max_allocs_value))
83-
printf "%-40s %12s %12s %12d %12s %12s %14d\n" "$bench" "$ns" "$max_ns_value" "$ns_delta" "$allocs" "$max_allocs_value" "$allocs_delta"
89+
ns_delta="$(float_delta "$ns" "$max_ns_value")"
90+
allocs_delta="$(float_delta "$allocs" "$max_allocs_value")"
91+
printf "%-40s %12s %12s %12s %12s %12s %14s\n" "$bench" "$ns" "$max_ns_value" "$ns_delta" "$allocs" "$max_allocs_value" "$allocs_delta"
8492

85-
if (( ns > max_ns_value )); then
93+
if float_exceeds "$ns" "$max_ns_value"; then
8694
echo "regression: $bench ns/op $ns exceeds $max_ns_value" >&2
8795
failures=$((failures + 1))
8896
fi
89-
if (( allocs > max_allocs_value )); then
97+
if float_exceeds "$allocs" "$max_allocs_value"; then
9098
echo "regression: $bench allocs/op $allocs exceeds $max_allocs_value" >&2
9199
failures=$((failures + 1))
92100
fi

0 commit comments

Comments
 (0)