Bash podczas odczytu pętli bardzo powolny w porównaniu do kota, dlaczego?

Prosty skrypt testowy tutaj:

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

Kiedy robięcat my450klinefile.txt | myscript CPU blokuje się na 100% i może przetwarzać około 1000 linii na sekundę. Około 5 minut na przetwarzanie tegocat my450klinefile.txt >/dev/null robi to za pół sekundy.

Czy jestbardziej wydajny sposób zrobić zasadniczo to. Po prostu muszę odczytać linię ze standardowego wejścia, policzyć bajty i wypisać ją w nazwanym potoku. Ale szybkość nawet tego przykładu jest niemożliwie powolna.

Co 1 Gb linii wejściowych muszę wykonać kilka bardziej złożonych akcji skryptowych (zamknij i otwórz kilka potoków, do których dane są przesyłane).

questionAnswers(4)

yourAnswerToTheQuestion