2012-07-17 7 views
6

¿Existe un proyecto de código abierto o guía de prácticas recomendadas que muestre la forma más rápida de copiar archivos en una máquina local, lan, san y wan, que puede competir con la velocidad de la copia incorporada de windows7 (u 8) o Windows Explorer copia?¿Cómo puedo competir con la velocidad de xcopy?

Para ser directo, no todos los archivos IO se crean iguales. Existen diferentes gastos generales en ciertos protocolos y técnicas. Algunas bibliotecas no aprovechan las operaciones asincrónicas ni aprovechan la velocidad de línea del hardware.

Estoy haciendo un inventario de las grandes transferencias de datos que utilizamos y tratando de evaluar la eficacia de nuestras aplicaciones cliente y las aplicaciones de proveedores externos. Ciertas aplicaciones de servidor son los peores delincuentes (basado en Java es el peor de los peores).

Estoy limitando el alcance de esta investigación a SMB 2 y 3 (cifs en windows7 y 8).

  • Existe una desventaja en la velocidad de uso de las bibliotecas POSIX. (Fread, fopen, fseek, etc)
  • ¿Hay alguna ventaja de utilizar las llamadas de Win32 (CopyFile2, ReadFileEx)
+2

Parece que si xcopy utiliza una función API no documentada, PrivCopyFileExW. Sin embargo, el CopyFileEx documentado probablemente funciona de manera muy similar. –

Respuesta

1

xcopy en realidad no es la manera más rápida para copiar archivos, especialmente a través de los discos oa través de una red local . Hay un producto comercial llamado TeraCopy que es mucho más rápido. Es de código cerrado, así que no sé cómo funciona por completo, pero una de las principales diferencias es que en lugar de usar un solo bucle para leer un fragmento de datos en un búfer de memoria y luego escribir ese búfer en la nueva ubicación, utiliza dos hilos y una cola de productor/consumidor.

El productor lee trozos del archivo de origen y los coloca en una cola. El consumidor lee desde la cola y escribe en el destino. La ventaja aquí es que la lectura y la escritura se pueden hacer al mismo tiempo. Sin embargo, debe tener cuidado y que el productor vigile el tamaño de la cola y no la haga demasiado grande para consumir demasiada memoria; por lo general, leer será más rápido que escribir, pero eso también depende de la fuente y el destino. ubicaciones.

Cuestiones relacionadas