La funzione copia / incolla di Windows ha diversi componenti.
- Un'interfaccia grafica carina
- Pre-analisi del lavoro da fare, per aiutare la GUI a fornire feedback positivi e rilevare i conflitti
- Essenzialmente single tasking
- Un'API interna molto veloce per copiare i file.
Secondo me è improbabile che tu possa scrivere codice che possa battere la funzione API di Windows CopyFile (). Puoi comunque usare il multi-threading per saturare il canale IO e se anche tu ometti la roba carina della GUI e la pre-analisi, allora probabilmente è il più veloce possibile.
Puoi testarlo abbastanza facilmente eseguendo diverse attività XCOPY allo stesso tempo e osservando il monitor delle risorse per vedere quando raggiungi il massimo throughput di IO.
Un ultimo pensiero: se stai copiando molti piccoli file ci possono essere dei vantaggi nel copiare i file che si trovano vicini tra loro per minimizzare il movimento della testina del disco. Dovresti testare per scoprire se questo è un fattore.