Ao procurar correspondências com grep
, geralmente percebo que a pesquisa subsequente leva muito menos tempo que a primeira - por exemplo, 25s vs. 2s. Obviamente, não é reutilizando as estruturas de dados de sua última execução - elas deveriam ter sido desalocadas. Ao executar um time
comando grep
, notei um fenômeno interessante:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Para onde vai o resto do tempo? Existe algo que eu possa fazer para que ele corra sempre rápido? (por exemplo, ter outro processo lendo os arquivos antes de grep
pesquisá-los.)
fonte
TL;DR
resposta é "[bloco aguardando] E / S".cat
+grep
ainda vai demorar mais do quegrep
sozinho.cat
como uma pré-busca barata enquanto estiver fazendo outra coisa, na preparação para ogrep
interesse.cat
s comtac
para o mesmo efeito e uso de RAM superior: D Ou todos os gatos com tacEm um ambiente de armazenamento em rede, também pode haver atrasos relativamente significativos quando você acessa pela primeira vez um arquivo que reside em um "arquivador" separado do servidor. Depois que o arquivo for acessado no servidor, ele será armazenado em cache localmente e o acesso subsequente aos dados será muito mais rápido.
Aqui está um experimento apenas computando uma soma de verificação dos dados do arquivo - não grep. A primeira invocação é lenta e as subseqüentes são rápidas.
fonte