Por que as strings são mais rápidas em um arquivo do que em stdin?

Por que as strings são mais rápidas em um arquivo do que em stdin?

Eu teria assumido que levaria um tempo semelhante, talvez 30% de diferença no máximo, mas está muito errado.

Há alguma razão para isso?

Com Zsh:

Demonstração

E com conchas diferentes:

Demonstração com Bash, Sh e Fish

Responder1

Não é um problema de strings, é um problema de pipes no OSX.

Faça o que fizer, o envio de dados através de um canal é terrivelmente lento, especialmente se os tamanhos de leitura e gravação não estiverem alinhados. Tente algo como

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

para ter uma ideia de quanto esses tubos retardam o processamento.

informação relacionada