¿Por qué las cadenas son más rápidas en un archivo que en la entrada estándar?

¿Por qué las cadenas son más rápidas en un archivo que en la entrada estándar?

Habría asumido que tomaría un tiempo similar, tal vez una diferencia del 30% como máximo, pero está muy lejos.

¿Hay alguna razón para esto?

Con Zsh:

Demostración

Y con diferentes conchas:

Demostración con Bash, Sh y Fish

Respuesta1

No es un problema de strings, es un problema de tuberías en OSX.

Hagas lo que hagas, enviar datos a través de una tubería es terriblemente lento, especialmente si los tamaños de lectura y escritura no están alineados. Pruebe algo parecido a

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

para tener una idea de cuánto ralentizan esos tubos el procesamiento.

información relacionada