arquivo zip extrai mais rápido que copiar

1

System Win 7 32 bit. Eu estou usando o WinRAR para extrair um arquivo .rar, mas acho que é o mesmo para qualquer arquivo zipado. Eu tenho:

1) SomeSourceCodeFolder.rar - > extrair - > SomeDestCodeFolder

2) SomeSourceCodeFolder - > cópia - > SomeDestCodeFolder

A primeira via é em geral muito mais rápida que a segunda. No meu caso, copiando uma pasta de código de 300mb diz 45 minutos (que eu só esperei 5 minutos, não me preocupei em terminar), mas quando eu tento fazer o mesmo com o winRAR, demora apenas 45 segundos para terminar .

Por que isso? Os arquivos zipados não passam pela decodificação + cópia para o sistema de arquivos? não deveria ser sempre mais lento do que copiar sozinho?

    
por Tom 06.05.2013 / 01:43

1 resposta

6

Isso faz perfeitamente sentido para determinado hardware: CPU rápida, disco lento (HDD não SSD), apenas um disco.

Os dados devem ser lidos e escritos. A quantidade de dados gravados é a mesma em ambos os casos, mas a leitura de um arquivo compactado significa que menos dados precisam ser lidos. Além disso, geralmente é muito mais rápido ler um único arquivo grande do que ler um diretório. Este efeito é maior se houver muitos arquivos pequenos. Você pode reduzi-lo lendo a estrutura de diretório no cache para que o disco não precise saltar entre os inodes e os blocos de dados:

# Edit: This works under Unix only
find /dir/to/be/copied -printf "" # just read the names
find /dir/to/be/copied -perm 777 -printf "" # just read the inodes

Se a CPU não diminuir a entrada de dados (porque a deflação demora mais tempo do que a leitura), a extração é mais rápida que a cópia.

Se você copiar de um SSD para outro dispositivo e sua CPU for da idade da pedra, a cópia será mais rápida.

    
por 06.05.2013 / 01:55