Bash в то время как чтение цикла очень медленно по сравнению с кошкой, почему?

Простой тестовый скрипт здесь:

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

Когда я делаюcat my450klinefile.txt | myscript процессор зависает на 100% и может обрабатывать около 1000 строк в секунду. Около 5 минут, чтобы обработать то, чтоcat my450klinefile.txt >/dev/null делает в полсекунды.

Есть либолее эффективный способ сделать по существу это. Мне просто нужно прочитать строку из stdin, посчитать байты и записать ее в именованный канал. Но скорость даже этого примера невероятно медленная.

Для каждого 1 Гб входных строк мне нужно выполнить несколько более сложных действий сценариев (закрыть и открыть некоторые каналы, на которые передаются данные).