Creo que este problema es bastante insoluble, pero es posible crear algunas estimaciones precisas con un poco más de conocimiento del proceso que se está ejecutando. Y en los casos en que hay grandes incógnitas, es mejor informar al usuario de esas incógnitas para que puedan tenerlas en cuenta.
Para tomar el ejemplo sencillo de la descarga de un lote de archivos tiene dos variables conocidas:
- El número de archivos
- El tamaño de los archivos
Para cada archivo no existe una sobrecarga constante (el tiempo que lleva establecer una conexión y el tiempo que lleva abrir un archivo en el sistema de archivos). También está el tiempo de descarga obvio asociado con el tamaño de los archivos. Crear una función que pueda expresar esto como el tiempo restante en términos de la velocidad de descarga actual es fácil y preciso, siempre que la velocidad de descarga no fluctúe demasiado. Pero ahí radica el problema.
Con un modelo preciso de la operación que está realizando, es fácil predecir cuánto tiempo llevará, siempre que no haya influencias externas. Y eso es raramente posible.
Sin embargo, podría buscar una solución que intente comprender y explicar estas influencias externas. El usuario puede encontrar útil recibir una alerta cuando la velocidad cambia drásticamente, ya que puede ajustar sus planes para que se ajusten a la nueva ETA. También puede ser útil explicar qué factores están afectando la operación actual. por ejemplo,
Your download will complete in 6 minutes, if the download speed stays at 50k/s
Esto permite al usuario hacer algunas conjeturas si saben que las velocidades pueden cambiar. Y finalmente conduce a menos frustraciones.
Independientemente de cómo no hacerlo de la misma forma que la copia de archivos de Microsoft pantalla de progreso –
Bastante similar a esta pregunta: http: // stackoverflow.com/questions/798800/whats-the-best-way-to-calculate-remaining-download-time –
Muchas gracias, no lo encontré antes, ¿qué debo hacer ahora? (La primera vez que pregunto en stackoverflow :)) – Maghis