diff options
Diffstat (limited to 'compute-tree-size-stats.sh')
-rwxr-xr-x | compute-tree-size-stats.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/compute-tree-size-stats.sh b/compute-tree-size-stats.sh new file mode 100755 index 0000000..62bbb44 --- /dev/null +++ b/compute-tree-size-stats.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +## SPDX-License-Identifier: CC0-1.0 +## +## Copyright (C) 2025 Woj. Kosior <koszko@koszko.org> + +set -e + +RESULTS_PATH="$1" + +if [ "$2" = "--omit-packages-with-breaking-changes" ]; then + BAD_ROW_REG="n/a|BC-yes" +else + BAD_ROW_REG="n/a" +fi + +printf "DESCRIPTION" +for MEASURE_TYPE in $(./helper.sh --get-measure-types); do + for AGGREGATION in MIN MAX AVG STD_DEV; do + printf ',%s-%s' "$MEASURE_TYPE" "$AGGREGATION" + done +done + +echo + +for TREE_KIND in $(./helper.sh --get-tree-kinds); do + printf %s "$TREE_KIND" | ./helper.sh --make-tree-kind-description + for MEASURE_TYPE in $(./helper.sh --get-measure-types); do + COL_NAME="$TREE_KIND-$MEASURE_TYPE" + ./helper.sh --get-csv-columns \ + "$RESULTS_PATH" "$COL_NAME" BREAKING-CHANGES | + grep -vE "$BAD_ROW_REG" | tail -n +2 | awk -F '[-,]' ' + BEGIN { + min = 999999; + } + // { + count += 1; + sum += $2; + squares_sum += ($2)^2; + if ($2 > max) { + max = $2; + } + if ($2 < min) { + min = $2; + } + } + END { + std_dev = sqrt((squares_sum - sum^2 / count) / count); + printf ",%d,%d,%.1f,%.1f", min, max, (sum / count), std_dev; + } + ' + done + echo +done |