#!/bin/bash # shellcheck disable=SC2034 # 'ut' and 'idl' appears unused. looptime=.2 declare -i i int cnt printf -v looptime %0.9f "$looptime" shopt -s extglob sltime=${looptime%%*(0)}; sltime=${sltime#0} looptime=${looptime/.}; looptime=${looptime##*(0)} shopt -u extglob read -r exe < <(readlink /proc/$$/exe); exe=${exe#$PWD/} optime() { # Compute time per operation in musec. if [[ "$cnt" ]] ;then local string=00000$(( ( looptime * 1000 / $1 )-(looptime*1000/cnt))) else local string=00000$(( looptime * 1000 / $1 )) ;fi printf -v "$2" '%.2f' ${string::-6}.${string: -6} printf ' - %s: %11s...\r' "${BASH_LINENO[0]}" "${!2}" >&2 } trap break usr2; exec {dummy}<> <( : ) timed() { read -rt $sltime -u "$dummy" _; kill -USR2 $$; } timed & for ((i=0;++i;)){ : ;};optime "$i" inctm cnt=$i timed & for ((i=0;++i;)){ : {0..999} ;};optime "$i" ass1k timed & for ((i=0;++i;)){ : {0..9}{0..9}{0..9} ;};optime "$i" ass1dx3 timed & for ((i=0;++i;)){ read -r ut idl