miércoles, 30 de julio de 2008

A tiro hecho

Una máxima del desarrollo de software dice: Antes de hacer algo, mira a ver si ya lo ha hecho alguien antes. Así que cuando decidí hacerme un programa para poner en cola las copias de archivos, eché un vistazo a Google a ver qué me podía contar al respecto.

La idea es la siguiente: Al realizar múltiples copias de archivos entre distintos discos duros, podemos observar cómo el tiempo estimado de cada copia se duplica, triplica, o π-plica, en función de la cantidad de copias que se realizan de forma simultánea, del tamaño de cada una de ellas, y del tipo de dispositivo conectado.

Este comportamiento me hizo pensar que realmente existe un problema en algún lado. Al contrario que IDE, la tecnología SATA garantiza el uso total del bus de datos para cada dispositivo conectado, así que teóricamente se podrían realizar simultáneamente dos copias de datos sin merma de ancho de banda, siempre que no coincidan ninguno de los dispositivos de origen y destino. Se debería poder hacer una copia del disco A al disco B mientras que se realiza otra copia simultánea del disco C al disco D.

Screenshot de CopyHandler en funcionamiento

Sin embargo este tipo de escenarios se da muy raramente, y lo normal es acabar usando un mismo bus de datos para realizar varias copias simultáneas. En el momento en que un dispositivo sirva de origen o destino a más de una copia, se pone en marcha la gestión de tiempo compartido para poder dar servicio a las dos copias de archivos simultáneamente.

Aquí pueden surgir opiniones acerca de si el tiempo total efectivo de todas las copias es el mismo si se copian en paralelo o si se copian en serie. Al fin y al cabo, la cantidad de datos a copiar es la misma en ambos casos. Mi opinión no demostrada es que se consume un tiempo adicional realizando copias en paralelo, al tener que gestionar el uso compartido del bus. La contraparte consiste en hacer notar que en la mayoría de los casos este tiempo adicional es despreciable.

Bueno, literatura aparte, el caso es que encontré el programa que encola y optimiza las copias de archivos en Windows. Se trata de CopyHandler, y ofrece todo lo que yo quería con algunos extras de regalo:

  • Se integra completamente con el sistema operativo
  • Encola las copias de archivos
  • Crea búferes de lectura y escritura para optimizar las copias
  • Da una información de progreso fiable
  • Licencia GPL2

Have a nice RSS! copy!

martes, 1 de julio de 2008