RUNS=${1:-5} median() { sort -n | awk '{a[NR]=$1} END{print (NR%2)?a[(NR+1)/2]:(a[NR/2]+a[NR/2+1])/2}'; } for cfg in "novec:" "vec:VECTORIZE=1" "avx2:VECTORIZE=1 AVX2=1"; do name=${cfg%%:*}; flags=${cfg#*:} make -s clean; make -s $flags >/dev/null 2>&1 || { echo "build $name failed"; exit 1; } t=$(for r in $(seq $RUNS); do ./test_auto_vectorize -t 1 | grep -oE '^[0-9.]+'; done | median) echo "$name $t"; eval "T_$name=$t" done awk -v n=$T_novec -v v=$T_vec -v a=$T_avx2 'BEGIN{printf "vec/novec speedup: %.2fx\navx2/vec speedup: %.2fx\navx2/novec speedup: %.2fx\n", n/v, v/a, n/a}'