Que é mais rápido e por quê: transferir vários arquivos pequenos ou poucos arquivos grandes?

16

Eu logo terei uma pasta com milhares de arquivos, cada arquivo na ordem de alguns KB. Eu precisarei transferi-los através de uma rede do Windows de um compartilhamento UNC para outro. Em geral, é mais rápido simplesmente copiar os arquivos em massa, ou seria mais rápido compactá-los (por exemplo, usando o 7zip no modo mais rápido) e enviar um ou alguns arquivos grandes? Ou não há diferença na prática?

    
por kestes 19.05.2009 / 06:17

6 respostas

36

É mais rápido transferir um único arquivo grande em vez de muitos arquivos pequenos devido à sobrecarga de negociação da transferência. A negociação é feita para cada arquivo, então, transferindo um único arquivo, ele precisa ser feito uma vez, transferir n arquivos significa que ele precisa ser feito n vezes.

Você economizará muito tempo se fechar antes da transferência.

    
por 19.05.2009 / 06:27
5

Jon Cahill está muito correto, um único arquivo será mais rápido. No entanto, vale lembrar que, se houver alguma instabilidade na conexão, arquivos individuais (ou grupos de tamanho médio em arquivos zip) podem ser melhores, porque se a transferência falhar, você terá que começar tudo de novo, enquanto com vários arquivos você só terá que refazer o último arquivo iniciado

    
por 19.05.2009 / 08:31
1

Muitos arquivos pequenos também serão mais caros para gravar no sistema de arquivos do que um único arquivo grande. Precisa fazer coisas como:

  • Verifique se o nome do arquivo é exclusivo
  • Escreva a entrada da tabela de arquivos

À medida que você obtém mais e mais arquivos em um diretório, isso pode se tornar muito caro. E cada uma dessas etapas pode adicionar latência ao processo de cópia e retardar tudo.

    
por 19.05.2009 / 07:57
0

O tamanho médio do pacote em relação ao tamanho médio do arquivo é provavelmente crítico aqui. Com muitos arquivos pequenos, você pode estar enviando muitos pequenos pacotes. Pequenos pacotes ainda incorrem em sobrecarga de TCP; você poderia dobrar a quantidade de tráfego como resultado.

Os sistemas modernos e até os relativamente antigos podem enviar vários arquivos em uma única conexão TCP, evitando os custos desse aperto de mão.

    
por 19.05.2009 / 07:12
0

Apenas o que eu encontrei, mas se você quiser uma transferência mais rápida, inicie a transferência do computador local e copie para a unidade local.

Copie \ computer1 \ myshare para c: \ files \ myshare, não use um terceiro computador e copie de \ computer1 \ myshare para \ computer2 \ mynewshare.

    
por 19.05.2009 / 09:12
0

Também vale lembrar que a escolha do protocolo afeta o tempo total de conclusão - por exemplo, para arquivos FTP de um host para outro, pode ser notavelmente mais rápido do que usar o compartilhamento de arquivos do windows (claro, coisas como permissões de domínio e como também são perdidos, mas em algumas situações, isso pode ser um trade-off aceitável - Afinal, estes também seriam perdidos ao compactar / descompactar)

    
por 19.05.2009 / 14:11