Prioridades y tiempo

Con los amigos y colegas que vivimos en el mundo tecnológico tenemos un tipo de chiste interno, cuando más de alguno pregunta “¿En cuánto…

Prioridades y tiempo

Con los amigos y colegas que vivimos en el mundo tecnológico tenemos un tipo de chiste interno, cuando más de alguno pregunta “¿En cuánto tiempo estás por acá?” y contesta “En unos 20 minutos” solemos preguntar “¿Minutos reales o minutos Microsoft?” jajajaja

https://xkcd.com/612/

Esta broma interna surgió de la famosa y no tan querida ventana de copia de archivos de Windows la cual nunca atina la velocidad de copia de archivos, por momentos dice que son 5 minutos y son 10 horas, por momentos dice 10hrs y son unos minutos… pero…

¿Por qué el diálogo de copia de archivo de Windows no predice bien el tiempo de copia?

La razón yace en el método de cálculo para copiar y en esto Windows no está solo, la interfaz de macOS y aún de Ubuntu hacen lo mismo y fallan en calcular de forma precisa, para poder mostrar un porcentaje de copia se necesita tener datos concretos para estimar cuánto resta, sin tener una meta total no se puede calcular el avance.

Un ejemplo simple, supongamos que tenemos manzanas en una mesa y las estamos depositando en una canasta, hasta el momento hemos depositado 15 manzanas, para saber el porcentaje de manzanas que llevamos se requiere de saber el total de manzanas, es por ello que previo a depositar las manzanas en la canasta debemos contarlas, esto es un proceso aparte del proceso de moverlas a la canasta, si son 30 en total, dividimos 15 dentro de 30 y multiplicamos por 100 para tener el porcentaje (simple regla de tres) lo que nos daría un 50%.

Lo mismo ocurre al momento de copiar archivos, la mayoría de diálogos de copia de archivos calculan el porcentaje en un paso, primero; escaneando el directorio que se va a copiar para tener un total de los archivos por copiar, ahí perdemos tiempo ya que es un proceso extra que requiere tanto uso de disco duro como de memoria RAM, luego, ya con el total de archivos en memoria, se inicia la copia de archivos, y con cada archivo copiado, avanza el porcentaje… sin embargo existe un problema, existen archivos que son pequeños y archivos grandes haciendo poco preciso el reporte de porcentaje, este es el método que regularmente usa Windows.

Es aquí donde entra la segunda estrategia usada por algunos desarrolladores, al momento de escanear los archivos que se van a copiar se registra no solo la cantidad de archivos sino cuánto miden en tamaño, con esto se tiene un estimado en porcentaje basado en bytes más que en el número de archivos, este tipo de cálculo es más preciso PERO hace que más lento el copiar archivos ya que el scan inicial toma más tiempo y requiere de más uso de memoria RAM y lectura del disco, algo que sucede muchísimo en macOS donde copiar gran cantidad de archivos con Finder es sencillamente engorroso… en algunas versiones tanto de Windows como de Finder se ha intentado calcular el tiempo de copia basado tanto en la cantidad de bytes como en el “ancho de banda” o tasa de transferencia del disco mientras se copia, pero falla debido varios factores, fragmentación de disco (qué tan ordenado están los datos en disco tanto al leer como al escribir) y uso del mismo para otras tareas en paralelo.

Ahora bien, en ambos casos NO se calcula el tiempo que demora cada transacción para crear un archivo en el sistema operativo, porque una cosa es copiar datos y otra es decirle al sistema que se va a alojar un archivo en ciertas áreas del disco, es justamente por ello que copiar un archivo de 1GiB es más rápido que copiar 1,000 archivos de 1MiB y la razón por la que ambos métodos de cálculo anteriormente descritos fallan en reportar el porcentaje real.

Existe una opción más rápida, copiar usando la terminal o consola, el famoso “modo de texto” que muchos llaman “DOS” erradamente, en GNU/Linux y macOS (UNIX) existe la utilidad cp y en Windows la utilidad “copy”, ambas copian archivos de manera eficiente y son más rápidos en esta tarea debido a que NO escanean los directorios ni reportan porcentajes o progreso, utilizan menos memoria y recursos debido a que hacen una tarea a la vez.

Aquí es donde toca decidir qué tanta prioridad tiene un cálculo estimado de tiempo y reporte de progreso que en definitiva va a hacer que la copia de archivos demore más… ¿Vale la pena saber el progreso y el tiempo estimado o vale la pena que simplemente copie lo más rápido posible?

Lo más curioso es que esto aplica no sólo cuando hablamos de copiar archivos sino en la mayoría de tareas humanas donde el constante monitoreo y burocracia si bien nos da números interesantes y curiosos en muchas ocasiones sólo atrasa el avance de una tarea… es donde toca definir prioridades.