¿Cómo determina Windows cuánto tiempo lleva realizar una acción determinada en un archivo?


10

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.

ingrese la descripción de la imagen aquí

Por ejemplo, cuando estoy borrando un archivo y Windows dice "Tiempo restante: 18 segundos", ¿cómo calcula este número y con qué?


1
Como este número es con frecuencia incorrecto, se calcula con base en # archivos para eliminar, dimensionar y acelerar las eliminaciones están programadas para aumentar o disminuir la estimación.
cybernard

1
@Ramhound ¿Y cómo sabe qué tan rápido se tarda? ¿Es la misma variable estática para todas las otras máquinas, incluidas las que se ejecutan en SSD, HD? ¿Qué pasa si tengo 200 GB de RAM? ¿Qué pasa si tengo 10 MB de RAM? ¿Cómo se calcula qué tan "rápida" es una acción?
yuritsuki

2
@imreallyfamecore Bueno, la idea básica es que mide qué tan rápido va durante unos segundos y supone que el resto del proceso continuará a la misma velocidad, en promedio. Si la velocidad promedio cambia con el tiempo, ajustará la estimación (lo que lleva a la infame "Windows me dijo que se copiará en 10 minutos y que ya han pasado 2 horas"). Sin embargo, es solo una suposición: el sistema operativo o cualquier aplicación no tienen forma de saber cuánto tiempo llevará realmente. ¿Qué pasa si el HDD está dañado? ¿O estás transfiriendo a través de la red? ¿O hay mucha fragmentación?
Luaan

66
Sé que me castigarán por esto, pero no puedo evitarlo. Esta NO es tu respuesta. XKCD: Estimación
KlaymenDK

10
El código:timeLeft = random(1,100);
MadTux

Respuestas:


20

¿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.


12
Solo para aclarar: ¿Está afirmando que así es como lo hace Windows? ¿O simplemente está ilustrando una aritmética simple mediante la cual se puede obtener una respuesta?
Shredderroy

10
y para lo último que 1%se necesita time so far * rand[0 - 10]mientras se muestrafew seconds left
Mark

1
Si está interesado, esta pregunta le dice cómo Windows (y OSX) formatea el tiempo restante en la barra de progreso una vez que tiene una idea de cuánto tiempo le queda ux.stackexchange.com/q/23624
Richard

1
No estoy diciendo que así es como lo hace Windows. Si lo hace exactamente así, es una coincidencia. Parece que es así, pero esta es una forma mediante la cual se puede obtener una respuesta. Me pareció que el afiche quería saber cómo se hace esto, y Windows se dio como ejemplo. Una constante de talla única multiplicada por el tamaño restante (como él propuso) es completamente inviable y creo que reveló que no tenía idea de cómo se hicieron estas estimaciones.
Valmiky Arquissandas

44
@ValmikyArquissandas: Raymond Chen (desarrollador del equipo de Windows en Microsoft) confirma este algoritmo en una publicación en su blog y también explica por qué puede estar equivocado. blogs.msdn.com/b/oldnewthing/archive/2004/01/06/47937.aspx
Richard

1

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.