mundodelphi

programacion en delphi

Calcular tiempo estimado de un proceso

Algunos programas cuando se hace una tarea que necesita tiempo de espera, como los programas antivirus, desfragmentados, compresores, descargas y subidas masivas, envío de emails con archivos adjuntos, muestran una barra de progreso y el tiempo que lleva (elapsed time) y el tiempo que aún queda para finalizar (estimated time), a veces el tiempo que se calcula no es muy ajustado depende de los factores del proceso

Calcular el tiempo transcurrido
para calcular el tiempo transcurrido de un proceso cualquiera comentado arriba, primero de todo debemos capturar el tiempo inicial de la tarea y cuando queramos actualizar el contador de tiempo, se obtiene el tiempo actual y con una simple resta tiempo_actual – tiempo_inicial obtendremos el tiempo transcurrido

Calcular el tiempo estimado
Para calcular el tiempo estimado de un proceso etc.., tenemos que desglosar la tarea en partes, y por cada parte calcular el tiempo que ha transcurrido y para obtener el tiempo estimado multiplicamos el tiempo transcurrido por las partes restantes

ejemplo “calcular tiempo estimado de copiado de archivos en disco” en pseudo código

tiempo_inicial = ahora();
archivos = ‘50 archivos de 1024 bytes’
contador = 0
bucle de 1 hasta 50
incrementar(contador)
tiempo_inicial_copiado = ahora()
copiar_archivo_en  nueva ubicacion
tiempo_final_copiado = ahora()
tiempo_restante = (tiempo_final_copiado – tiempo_inicial_copiado) x (50 – contador)
tiempo_transcurrido = tiempo_final_copiado – tiempo_inicial
actualizar contador de tiempo
fin bucle

Para obtener el tiempo restante de una descarga de archivo de internet se debería calcular por bloques de descarga por ejemplo lo que se tarda en descargar 1024 bytes que sería un 1 Kb sabiendo eso y que el archivo pese 1 Megabyte, ya lo tendríamos

Para obtener el tiempo restante de una transacción de base de datos, copia de registros, eliminación, migración etc.. Debemos calcular lo que tarda por un registro o si es muy enorme por bloques de registros

como puedes ver el tiempo transcurrido no es exacto depende de factores del mismo proceso, el siguiente ejemplo hecho en delphi sirve para calcular un tiempo transcurrido que se puede adaptar, la actualización del tiempo lo muestra en horas minutos y segundos

var
 StartTime,EndTime,ElapsedTime,EstimatedTime: Dword;
 actual_progress,total_progress,i:integer;
 Estimated_hours:dword;Estimated_Minutes:dword;Estimated_seconds:dword;
 Informacion:string;
begin
 Timer1.Enabled := false;
 Actual_progress := 0;
 total_progress := 10;
 for i:=Actual_progress to Total_Progress do
 begin
 StartTime := GetTickCount();
 //processo a realizar
 EndTime := GetTickCount();
 ElapsedTime := EndTime-StartTime;
 TranscursTime := ElapsedTime * (total_progress - i);
 //calculo de horas minutos y segundos
 Estimated_hours := (ElapsedTime div (3600 * 999)) mod 24;
 Estimated_Minutes := (ElapsedTime div (60 * 999)) mod 60;
 Estimated_Seconds := (ElapsedTime div 999) mod 60;
 Informacion := 'Tiempo estimado: ' + inttostr(Estimated_hours) + ':' + inttostr(Estimated_Minutes) + ':' + inttostr(Estimated_Seconds);
 label1.Caption := Informacion;
 end;
end;

frases de busqueda interna: calcular tiempo estimado de un proceso en programación, calcular tiempo estimado de un proceso en delphi, calcular tiempo restante en programación, calcular tiempo restante en delphi, calcular tiempo transcurrido en programación, calcular tiempo transcurrido en delphi, calcular tiempo que falta en programación, calcular tiempo que falta en delphi, obtener tiempo restante de un proceso en delphi, obtener tiempo restante de una rutina en delphi, obtener tiempo restante de una tarea en delphi, calcular tiempo aproximado de un proceso, si alguna vez necesitas calcular e actualizar en tiempo real (mientras se esta realizando el proceso) de una tarea, copiado de archivos, calculos matematicos, descargar de internet,copiado de registros de una base de datos, etc. y quieres mostrar el tiempo estimado e restante de un proceso, es decir el tiempo que aún queda para finalizar la tarea.

Tagged as: ,

Leave a Response

Please note: comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

Google Analytics Alternative