O que é mais rápido, cp -R ou descompactando arquivos tar.gz?

2

Eu tenho alguns arquivos tar.gz que totalizam muitos gigabytes em um sistema CentOS. A maioria dos arquivos tar.gz é bem pequena, mas os que possuem imagens são grandes. Um é 7.7G, outro é cerca de 4G e cerca de 1G.

Eu descompactei os arquivos uma vez e agora quero uma segunda cópia de todos esses arquivos.

Presumi que copiar os arquivos descompactados seria mais rápido do que descompactá-los novamente. Mas eu comecei a rodar o cp -R cerca de 10 minutos atrás e até agora menos de 500M é copiado. Tenho certeza de que o processo de descompactação foi mais rápido.

Estou certo?

E se sim, por quê? Não parece fazer sentido que o desempacotamento seja mais rápido do que simplesmente duplicar estruturas existentes.

    
por Buttle Butkus 18.10.2012 / 23:11

2 respostas

9

Considere os dois cenários:

  • Copiar exige que você leia o arquivo completo do disco e grave-o no disco
  • O Tar-Gzip requer que você leia um arquivo menor do disco, descompacte e grave no disco.

Se a sua CPU não está sendo sobrecarregada pelo processo de descompactação, é lógico que as operações de E / S são limitadas. Por esse argumento (e desde que você tenha que escrever a mesma quantia em ambos os casos), ler um arquivo menor (o tar.gz) leva menos tempo do que ler um arquivo maior. Também o tempo é salvo porque é mais rápido ler um único arquivo do que ler muitos arquivos pequenos.

O tempo economizado depende da diferença entre o tempo gasto para ler (E / S) e descompactar (CPU). Portanto, para arquivos que são minimamente compactáveis (por exemplo, arquivos já compactados como mp3, jpg, zip, etc.), onde o tempo necessário para a descompactação provavelmente será maior que o tempo economizado na operação de leitura, ele será de fato mais lento para descomprimir do que para copiar.

(Vale a pena notar que quanto mais lenta a E / S, mais tempo será salvo usando o arquivo compactado - um desses cenários se a origem e o destino da operação de cópia estiverem no mesmo disco físico). / p>     

por 18.10.2012 / 23:18
1

Ler um arquivo muito pequeno é muito mais rápido do que ler um monte de arquivos grandes. Isso geralmente é verdade mesmo se a CPU tiver que descompactá-lo.

    
por 18.10.2012 / 23:12