Quería saber si hay una ecuación que Windows usa para determinar cuánto tiempo lleva realizar una acción en un archivo, por ejemplo, eliminar, copiar, borrar o instalar.
Por ejemplo, cuando estoy borrando un archivo y Windows dice "Tiempo restante: 18 segundos", ¿cómo calcula este número y con qué?
windows
file-transfer
file-management
yuritsuki
fuente
fuente
timeLeft = random(1,100);
Respuestas:
¿Te has dado cuenta de que generalmente no te da ninguna estimación en los primeros segundos?
Eso es porque en los primeros segundos, solo hace la operación que tiene que hacer. Luego, después de un (pequeño) tiempo, sabe cuánto copió / eliminó / etc. y cuánto tiempo tardó . Eso te da la velocidad promedio de la operación.
Luego, divida los bytes restantes por la velocidad, y tendrá el tiempo que tomará completar la operación.
Esto es matemática de la escuela primaria. Si desea viajar 360 km, y al final del primer minuto viajó 1 km, ¿cuánto le tomará llegar a su destino?
Bueno, la velocidad es de 1 km / minuto. Eso es 60 km / h. 360 km dividido por 60 km / h te da 6 horas (o 360 km / 1 km / minuto = 360 minutos = 6 horas). Como ya ha viajado durante un minuto, el tiempo estimado restante es de 5 horas y 59 minutos.
Sustituya "viaje" con "copia" y "km" con "bytes" y esa es su pregunta.
Los diferentes sistemas tienen diferentes formas de estimar el tiempo. Puede tomar el último minuto, y las estimaciones pueden variar enormemente, o puede tomar el tiempo completo, y si la velocidad realmente cambia permanentemente, sus estimaciones pueden estar muy lejos de la realidad. Lo que describí es el método más simple.
fuente
1%
se necesitatime so far * rand[0 - 10]
mientras se muestrafew seconds left
responder con una simple multiplicación cruzada es terriblemente condescendiente. Creo que estoy seguro de que él ya lo sabía, así es como también constantemente estimamos las cosas en nuestra cabeza.
El problema con las barras de progreso de la operación de archivos es que solo es correcto para datos uniformes, por lo que si copia 100 archivos que tienen todos el mismo tamaño y su unidad no está haciendo nada más, el progreso estimado será perfecto, pero ¿y si el primero ¿99 archivos eran pequeños archivos txt y el último es un archivo de video grande? El progreso estará MUY BIEN.
Este problema aumenta aún más cuando no maneja archivos en una carpeta, sino en varias subcarpetas. Supongamos que tiene 5 subcarpetas y desea eliminarlas (el tamaño no importa mucho en este caso, entonces), las primeras 4 carpetas solo contienen menos de 10 archivos, por lo que para cuando la operación llega a la quinta carpeta, cree que se trata 80% hecho, y la quinta carpeta boom contiene 5000 archivos y su progreso vuelve al 1%
WinXP intentó evitar esto contando de antemano el número de archivos, lo que significaba que cuando la carpeta no estaba indexada en Windows, dependiendo del número de archivos, XP realmente no comenzó la operación durante los primeros 20 segundos (tiempo que le llevó a contar) lo que enfureció a todos.
Entonces, aunque tampoco tengo un conocimiento especial sobre cómo lo hace Windows (pero qué más hay aparte de contar archivos y bytes) Espero poder ilustrar por qué es defectuoso y por qué nunca será perfecto.
Lo mejor que podría hacer sería no depender únicamente del recuento de archivos O bytecount, sino generar un promedio de los dos.
O si desea volverse loco, el sistema operativo podría iniciar una base de datos de cuánto tiempo tomaron estas operaciones en el pasado en su máquina e incluirlo en la ecuación.
Pensamiento final: si alguien piensa en un sistema de archivos que le permita al sistema operativo saber qué tamaño tiene cada carpeta, sin calcularlo primero, al menos obtendría una estimación correcta del progreso al eliminar carpetas enteras y no solo partes de ella.
fuente