TEMPO ESTIMADO DE UM PROCESSO NO PROGRESSBAR (P/EXPERTS)
Estou tentando de todas as formas descobrir como os programas de grandes empresas trabalham com aquelas estimativas de tempo sobre o decorrer do processo. Ex. copia de arquivos, calculos, e etc...
Aguém têm algum exemplo ou até mesmo onde posso encontrar a literatura sobre isso, mesmo que envolva matemática pura... Gostaria de contar com a ajuda de todos.
hehehe, estou precisando dormir, me ajudem...
Abraço a todos..... 8)
Aguém têm algum exemplo ou até mesmo onde posso encontrar a literatura sobre isso, mesmo que envolva matemática pura... Gostaria de contar com a ajuda de todos.
hehehe, estou precisando dormir, me ajudem...
Abraço a todos..... 8)
Juniorvieira
Curtidas 0
Respostas
Marcosrocha
15/10/2008
Um cálculo que um amigo meu me passou há tempos atrás para calcular o processamento médio de um fetch (While) é o seguinte:
[b:403719b30b]Etapa1[/b:403719b30b]
[b:403719b30b]Etapa2[/b:403719b30b]
Este cálculo irá te retornar o tempo em segundos (se eu não estou enganado). Aí você divide por 60 e tem o tempo em minutos.
No caso de Cópia de Arquivo, substituir ´Quantidade Total de Registros´ por ´Tamanho do Arquivo´ e ´Registros Processados´ por ´Tamanho Copiado´ e por aí vai...
[b:403719b30b]Etapa1[/b:403719b30b]
(Horário de Inicio x Registros Processados) / Quantidade Total de Registros
[b:403719b30b]Etapa2[/b:403719b30b]
(Quantidade Total de Registros / Registros Processados) / Resultado da Conta 1
Este cálculo irá te retornar o tempo em segundos (se eu não estou enganado). Aí você divide por 60 e tem o tempo em minutos.
No caso de Cópia de Arquivo, substituir ´Quantidade Total de Registros´ por ´Tamanho do Arquivo´ e ´Registros Processados´ por ´Tamanho Copiado´ e por aí vai...
GOSTEI 0
Juniorvieira
15/10/2008
Um cálculo que um amigo meu me passou há tempos atrás para calcular o processamento médio de um fetch (While) é o seguinte:
[b:2348afdfed]Etapa1[/b:2348afdfed]
[b:2348afdfed]Etapa2[/b:2348afdfed]
Este cálculo irá te retornar o tempo em segundos (se eu não estou enganado). Aí você divide por 60 e tem o tempo em minutos.
No caso de Cópia de Arquivo, substituir ´Quantidade Total de Registros´ por ´Tamanho do Arquivo´ e ´Registros Processados´ por ´Tamanho Copiado´ e por aí vai...
(Horário de Inicio x Registros Processados) / Quantidade Total de Registros
(Quantidade Total de Registros / Registros Processados) / Resultado da Conta 1
:arrow: Obrigado, Marcos Rocha. Legal o que vc postou. eu achava que tinha um jeito de estipular o processo pelo tempo que ele dura no processador. ou algo do genero. Pq os processos sofrem I/O e prempção logo daria pra calcular até que parte do processo já ocorreu. Mas é meio viajem né ??? heheheh As vezes eu faço uns desafios pra mim desse tipo hehe vou acabar adoecendo kkkkk
GOSTEI 0
Marcosrocha
15/10/2008
Junior, eu estive estudando este código porque pra ser sincero na época eu desisti de testar porque estava sem tempo. Na verdade eu rodei um While aqui e o cálculo parece estar errado. Ele está mostrando os segundos do relógio do PC. Mas a lógica é essa mesmo:
Pegar a Hora+Minuto+Segundos do Início do Processo e comparar a Quantidade Total com a Quantidade de Registros Processados.
E uma correção, na etapa 2 é:
Mas como disse, parece que não deu certo o cálculo. Caso eu encontre algo a respeito, eu volto a postar.
Pegar a Hora+Minuto+Segundos do Início do Processo e comparar a Quantidade Total com a Quantidade de Registros Processados.
E uma correção, na etapa 2 é:
(Quantidade Total de Registros / Registros Processados) * Resultado da Conta 1
Mas como disse, parece que não deu certo o cálculo. Caso eu encontre algo a respeito, eu volto a postar.
GOSTEI 0
Emerson Nascimento
15/10/2008
tente algo assim:
horainicio := datetime; total := totaldebytes; // ou de registros, ou de qualquer outra coisa saldo := total; processado := 0; tempoestimado := 0; tempodecorrido := 0; while processado < total do begin // a variável processado precisa acumular o que está sendo processado processado := processado + soma_o_total_executado; saldo := saldo - processado; tempodecorrido := secondsbetween(now, horainicio); tempoestimado := saldo * (processado / tempodecorrido); labelx.caption := formatfloat(´,#0.00 segundos´, tempoestimado); application.processmesages; end;
GOSTEI 0
Juniorvieira
15/10/2008
Maravilha bem legal, valeu pela ajuda rapaziada.. a parada fica bem matematica mesmo... :lol:
GOSTEI 0
Facc
15/10/2008
Posso usar o mesmo conceito pra mostrar o progresso de um envio de email pelo meu programa?
D2006 e Indy9
D2006 e Indy9
GOSTEI 0
Emerson Nascimento
15/10/2008
pode sim, Facc. porém, se seu problema for somente o progresso da barra, o indy já te dá condições de preenchê-lo corretamente através dos seus eventos. o problema aqui é estimar o tempo para término do processo.
GOSTEI 0
Facc
15/10/2008
Qual evento? Tentei ver em todos, mas não achei.
Certa vez achei aqui no forum que pegava o tamanho do email a ser enviado, mas não consegui implementar.
Certa vez achei aqui no forum que pegava o tamanho do email a ser enviado, mas não consegui implementar.
GOSTEI 0