Usando comandos -v (verbose) slow down?

28

Nesta pergunta: Como remover todos os arquivos e subdiretórios em um diretório sem excluir o diretório no bash? é perguntado como excluir todos os arquivos em uma pasta, e não a pasta em si.

A excelente resposta de Matt inclui o uso do sinalizador -v no comando 'rm'.

rm -rfv dontDeleteMe && mkdir dontDeleteMe

O comando que eu deixei foi o acima. Certamente útil, de fato, mas o sinalizador -v em 'rm' e / ou em geral diminui as tarefas feitas através da linha de comando?

Eu tenho uma pasta com arquivos .txt (cerca de 100.000 deles) que eu criei, excluí e recriar para mim algumas vezes agora. Algumas vezes com rm, algumas vezes no navegador de arquivos, e tenho a sensação de que é ainda mais lento usar o comando rm como mostrado acima. A bandeira -v tem algo a ver com isso?

    
por Eiriks 09.10.2014 / 15:40

2 respostas

32

Sim, o sinalizador -v desacelera o comando.

A maioria, se não todos os softwares (ou comandos), verifica se um sinalizador é fornecido e executa um monte de código relacionado ao sinalizador. No caso do sinalizador -v, eles provavelmente executariam vários comandos de saída (como echo ou printf ), que eles prefeririam ignorar sem a sinalização.

Isso significa mais ciclos de instruções para o processador e, portanto, mais tempo de execução.

É melhor se você não usar o sinalizador -v se não for ler / precisar as mensagens.

Por outro lado, a CLI seria / deveria ser mais rápida que a GUI, assumindo que você não inclui o tempo necessário para digitar os comandos e pressionando a tecla Enter .

De este blog de superusuário esta imagem explica muito bem a lentidão

Para o comando específico em questão, os resultados do comando time são

//with -v
real    0m8.753s
user    0m0.816s
sys     0m2.036s

//without -v
real    0m1.282s
user    0m0.124s
sys     0m1.092s

isso foi feito com o diretório contendo 100.000 arquivos vazios

    
por Registered User 09.10.2014 / 15:54
5

Por que não descobrir você mesmo: use o tempo.

$ time rm -rfv dontDeleteMe && mkdir dontDeleteMe
real    0m0.003s
user    0m0.001s
sys     0m0.002s

$ time rm -rf dontDeleteMe && mkdir dontDeleteMe
real    0m0.002s
user    0m0.001s
sys     0m0.001s
    
por sethmuss 09.10.2014 / 22:06