Mesmo no disco local, há alguma sobrecarga por arquivo, que acredito ser principalmente devido à despesa de abrir um arquivo: para abrir um arquivo existente, o Windows precisa analisar o caminho, localizar as entradas correspondentes em cada nível da árvore de diretórios, procure o arquivo na MFT e verifique a ACL. Para criar um novo arquivo, o Windows precisa analisar o caminho, localizar as entradas correspondentes em cada nível da árvore de diretórios, verificar o diretório ACL e incluir o arquivo na MFT e na entrada de diretório de nível superior.
Se você tiver apenas um thread, abra o arquivo de origem, abra o arquivo de destino, copie os dados e feche os arquivos, e só então poderá passar para o próximo. Isso significa deixar a parte ociosa do subsistema de E / S do tempo. Se você tem vários segmentos, você pode abrir arquivos ao mesmo tempo em que copia dados; o ideal é que você mantenha o sistema de E / S ocupado o tempo todo.
A sobrecarga não é tão perceptível em um único arquivo, mas se você tiver muitos arquivos pequenos, ele será adicionado e o tempo economizado poderá ser significativo.