Package: devscripts Version: 2.15.8 Severity: wishlist Tags: patch Hi,
I sometimes use annotate-output with a constant prefix (not containing a time format string) to mark the output of several programs that run at the same time. In this case, it is not necessary to call 'date' for each line. The attached patch adds an optimization for this case. On my machine, for a 10000 line FILE, a call to annotate-output +PREFIX cat FILE takes > 10s without my patch and < 0.3s with my patch. The output is the same in both cases. Cheers, Stefan
--- /usr/bin/annotate-output 2015-08-02 15:08:42.000000000 +0200 +++ annotate-output 2015-09-20 10:51:32.953880510 +0200 @@ -32,6 +32,16 @@ fi } +addprefix () +{ + while IFS= read -r line; do + echo "$1: $line" + done + if [ ! -z "$line" ]; then + echo "$1: $line" + fi +} + usage () { echo \ @@ -75,8 +85,15 @@ mkfifo $OUT $ERR || exit 1 -addtime O < $OUT & -addtime E < $ERR & +if [ "${FMT/\%}" != "${FMT}" ] ; then + addtime O < $OUT & + addtime E < $ERR & +else + # If FMT does not contain a %, use the optimized version that + # does not call 'date'. + addprefix "${FMT#+} O" < $OUT & + addprefix "${FMT#+} E" < $ERR & +fi echo "Started $@" | addtime I "$@" > $OUT 2> $ERR ; EXIT=$?