Resumen de abajo, hasta ahora:
/usr/bin/tail
en Big Sur es muy lento en comparación con otros servicios similares.
- Cuando se presenta un archivo de texto con líneas largas, puede volverse inusualmente lento.
- No sabemos si esto es exclusivo de esta versión de MacOS.
- No sabemos si esto está en el radar de Apple.
gtail
de coreutils
es un sustituto eficaz.
Parece que el valor por defecto tail
en /usr/bin
es muy lento cuando se solicita un gran número de líneas, y es órdenes de magnitud peores cuando se le da un archivo binario:
archivo de texto:
> time tail -3 threeGB.txt > /dev/null
tail -3 threeGB.txt > /dev/null 0.00s user 0.01s system 89% cpu 0.011 total
> time tail -26500 threeGB.txt > /dev/null
tail -26500 threeGB.txt > /dev/null 1.31s user 1.85s system 98% cpu 3.195 total
> time gtail -26500 threeGB.txt > /dev/null
gtail -26500 threeGB.txt > /dev/null 0.00s user 0.00s system 42% cpu 0.018 total
> tail -265000 threeGB.txt > /dev/null
tail -265000 threeGB.txt > /dev/null 12.80s user 17.76s system 99% cpu 30.700 total
> gtail -265000 threeGB.txt > /dev/null
gtail -265000 threeGB.txt > /dev/null 0.02s user 0.02s system 87% cpu 0.038 total
archivo binario:
> time tail -3 twoGB.mpg > /dev/null
tail -3 twoGB.mpg > /dev/null 0.00s user 0.00s system 40% cpu 0.011 total
> time tail -26500 twoGB.mpg > /dev/null
tail -26500 twoGB.mpg > /dev/null 338.10s user 265.03s system 78% cpu 12:52.17 total
> time gtail -26500 twoGB.mpg > /dev/null
gtail -26500 twoGB.mpg > /dev/null 0.01s user 0.04s system 24% cpu 0.193 total
(MacBook Pro 2017, Intel i7, 16GB, Big Sur, ssd interno)
No sé si este es un problema nuevo de Big Sur. Puede ser que no se haya notado antes debido a alguna combinación de tamaño de archivo, tipo de archivo y número de líneas.
Una solución, como se ha demostrado anteriormente: utilizar gtail
de coreutils
. Si quieres, puedes enlazarlo en tu PATH como tail
( este puesto tiene información al respecto).
Añadido: pruebas con el archivo de texto del OP, utilizando el mismo MacBook Pro mencionado anteriormente.
> time tail -265000 tc1_22.TXT >/dev/null
tail -265000 tc1_22.TXT > /dev/null 577.89s user 808.23s system 99% cpu 23:11.05 total
> time gtail -265000 tc1_22.TXT >/dev/null
gtail -265000 tc1_22.TXT > /dev/null 0.46s user 0.66s system 97% cpu 1.154 total
El archivo es un texto ASCII, CRLF, con campos delimitados por tabulaciones. Significativamente, cada línea tiene 1.900 caracteres; el rendimiento aquí se ajusta al patrón encontrado por @John Palmieri.