estoy haciendo una sencilla herramienta de copia de seguridad de sincronización de carpetas para mí y se encontró con un buen control de carretera usando File.Copy. Al hacer pruebas para copiar una carpeta de ~ 44,000 archivos pequeños (carpetas de correo de Windows) a otra unidad en mi sistema, descubrí que usar File.Copy era más de 3 veces más lento que usar una línea de comando y ejecutar xcopy para copiar los mismos archivos/carpetas. La versión de My C# toma más de 16 minutos para copiar los archivos, mientras que la copia toma solo 5 minutos. Intenté buscar ayuda sobre este tema, pero todo lo que encuentro es que las personas se quejan de la lenta copia de archivos grandes en una red. Esto no es un gran problema de archivos ni un problema de copia de red..net File.Copy muy lento al copiar muchos archivos pequeños (no más de red)
Encontré un interesting article about a better File.Copy replacement, pero el código como se publicó tiene algunos errores que causan problemas con la pila y no estoy lo suficientemente informado como para solucionar los problemas en su código.
¿Hay formas comunes o fáciles de reemplazar File.Copy con algo más rápida?
¡Gracias por la buena información! Estaba particularmente interesado en intentar almacenar en búfer las lecturas/escrituras como describió XCopy. Hice algunas pruebas con un búfer de 50 mb y descubrí que mi tiempo de copia se redujo a 14 min 40 s. Entonces no es una mejora sorprendente, sino mejor. Todavía años luz detrás de los tiempos de XCopy. Veré si enhebrar las lecturas/escrituras ayuda a continuación ... – Guavaman
En realidad, volví a 16 minutos después de darme cuenta de que mi sistema de copia en búfer basado en FileStream no copiaba las propiedades del archivo (atributos, tiempo de creación, etc.) Después de volver a agregarlos, el tiempo de copia vuelve a estar en File.Copy, solo he perdido 50 MB de memoria en el almacenamiento en búfer. :( – Guavaman