Почему строки быстрее обрабатываются в файле, чем в stdin?

Почему строки быстрее обрабатываются в файле, чем в stdin?

Я бы предположил, что это займет примерно столько же времени, может быть, разница составит максимум 30%, но это совсем не так.

Есть ли на это какие-то причины?

С Зш:

Демонстрация

И с разными оболочками:

Демонстрация с Bash, Sh и Fish

решение1

Это не проблема strings, это проблема каналов в OSX.

Что бы вы ни делали, отправка данных через канал ужасно медленная, особенно если размеры чтения и записи не совпадают. Попробуйте что-нибудь вроде

cat somefile | cat | cat | cat | cat | cat | strings

чтобы получить представление о том, насколько эти трубы замедляют обработку.

Связанный контент