Para um arquivo realmente grande como 1 GB, wc -lé lento. Temos uma maneira mais rápida de calcular o número de novas linhas para um arquivo específico?
wcde ter sobrecarga demais, tente implementar o seu próprio foreach byte in file: if byte == '\n': linecount++. Se implementado em C ou assembler, acho que não ficará mais rápido, exceto talvez no espaço do kernel em um RTOS com maior prioridade (ou até use uma interrupção para isso - você simplesmente não pode fazer mais nada com o sistema. .. tudo bem, eu discordo ;-))
time wc -l some_movie.aviem um arquivo não armazenado em cache, resultando em 5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s. O que basicamente prova que o @thrig está certo, a E / S prejudica seu desempenho nesse caso.
time wc -l some_large_file_smaller_than_cacheduas vezes em rápida sucessão e veja a rapidez da segunda operação, time wc -l some_large_file_larger_than_cachee veja como o tempo não muda entre as execuções. Para um arquivo de ~ 280 MB aqui, o tempo varia de 1,7 segundos a 0,2 segundos, mas para um arquivo de 2 GB são 14 segundos nas duas vezes.
/usr/bin/time wc -l <file>diz? Qual é o seu hardware? É mais rápido se você executar o comando repetidamente? Nós realmente precisamos de mais informações;)
0x0A, a E / S é sem dúvida o gargalo.