Script bash simples demorando muito para ser executado

0

Eu escrevi a seguinte função no meu .bashrc para uso em vez de rm * :

function re()
{
   cp . -R /home/glset/ritwik/trash/
   rm *
}

Funciona ... mas é muito lento. Mesmo para arquivos pequenos, demora muito para ser executado. É sempre mais rápido disparar os dois comandos, um após o outro, o que, em primeiro lugar, anula o propósito da função. Estou fazendo algo errado aqui? O que faz demorar mais tempo?

    
por Chani 03.06.2013 / 08:47

1 resposta

3

Executar a função ou executar os dois comandos separadamente não faz nenhuma diferença mensurável no tempo de execução.

Meu palpite é que você executou a função, descobriu que ela estava lenta e tentou os comandos separadamente.

Se você fez isso, é provável que, na primeira vez, os dados não estivessem presentes no cache de disco, então o que você mediu foi o tempo para carregar os dados do disco. Na segunda vez, os dados já estavam no cache de disco (porque você tinha acabado de acessá-lo), então você mediu o tempo para copiar os dados na memória.

Para fazer benchmarks apropriados, você precisa iniciar todas as medições nas mesmas condições: ou você sabe que todos os dados estão no cache, ou você sabe que todos os dados precisam ser carregados do disco.

Copiar os dados e remover o original é uma maneira muito estranha de fazer isso. Execute mv em vez disso! É instantâneo se você estiver movendo os arquivos dentro do mesmo sistema de arquivos.

Além disso, rm * é um comando muito incomum. Se você não precisar mais de um diretório, remova o diretório: rm -r somedir ou mv somedir ~/trash/ .

    
por 04.06.2013 / 02:24