Bash enquanto lê loop extremamente lento comparado ao gato, por quê?

Um script de teste simples aqui:

while read LINE; do
        LINECOUNT=$(($LINECOUNT+1))
        if [[ $(($LINECOUNT % 1000)) -eq 0 ]]; then echo $LINECOUNT; fi
done

Quando eu façocat my450klinefile.txt | myscript a CPU trava em 100% e pode processar cerca de 1000 linhas por segundo. Cerca de 5 minutos para processar o quecat my450klinefile.txt >/dev/null faz em meio segundo.

Tem algumamaneira mais eficiente para fazer essencialmente isso. Eu só preciso ler uma linha de stdin, contar os bytes e escrevê-lo para um pipe nomeado. Mas a velocidade até mesmo deste exemplo é incrivelmente lenta.

Cada 1Gb de linhas de entrada eu preciso fazer algumas ações de script mais complexas (fechar e abrir alguns canais para os quais os dados estão sendo alimentados).

questionAnswers(4)

yourAnswerToTheQuestion