Calcular o Tempo de Duração de Um Insert e um Select
estou precisando de uma rotina para calcular o tempo de duração de uma inserção de registros q está dentro de um [b:62c9c51a02]for to do[/b:62c9c51a02] )insere vários registros) e depois na pesquisa sql ele calcule também o tempo de duração dessa consulta até chegar ao resultado da pesquisa eu tentei com um ttimer mas não deu muito certo. estou usando ibx.
obrigado
obrigado
Tap_pedroso
Curtidas 0
Respostas
Gurc
09/11/2004
Colega, não lembro certinho o nome da função, pois usei-a poucas vezes. Mas ela está na Unit DateUtils, se eu não me engano :D. Tente procurá-la no Help. Ela pega a diferença entre dois TDateTimes em milisegundos. Tem também uma função da API do Windows que retorna os Ticks do processador. Você grava em uma variável inteira e depois compara subtraindo no final do [b:781c313356]for[/b:781c313356].
Espero, mesmo sendo dificil, ter ajudado :lol:.
Até mais,
Gustavo Royer Chaurais
Espero, mesmo sendo dificil, ter ajudado :lol:.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0
Gurc
09/11/2004
Colega, não lembro certinho o nome da função, pois usei-a poucas vezes. Mas ela está na Unit DateUtils, se eu não me engano :D. Tente procurá-la no Help. Ela pega a diferença entre dois TDateTimes em milisegundos. Tem também uma função da API do Windows que retorna os Ticks do processador. Você grava em uma variável inteira e depois compara subtraindo no final do [b:3262bf44d3]for[/b:3262bf44d3].
Espero, mesmo sendo dificil, ter ajudado :lol:.
Até mais,
Gustavo Royer Chaurais
Espero, mesmo sendo dificil, ter ajudado :lol:.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0
Rnildo
09/11/2004
Caro colega. Veja se isto ajuda. No início da rotina chame a função abaixo com argumento False e no final com argumento true. A resposta é o tempo de processamento em string.
var XTempoIni : TDateTime; // variável global
Function TForm1.TempoDura(Tipo : boolean) : string;
begin
// Se tipo false, armazena tempo atual do computador em XTempoIni
// se True, retorna em string tempo decorrido a partir da chamada
// inicial Tempo(False), indicando o tempo de duração de execução
// de uma rotina. Deve ser chamada com False no início e com true no final do bloco.
if Tipo then Result:=TimeToStr(Time - XTempoIni)
else begin
XTempoIni:=Time;
Result:=´´;
end;
end;
var XTempoIni : TDateTime; // variável global
Function TForm1.TempoDura(Tipo : boolean) : string;
begin
// Se tipo false, armazena tempo atual do computador em XTempoIni
// se True, retorna em string tempo decorrido a partir da chamada
// inicial Tempo(False), indicando o tempo de duração de execução
// de uma rotina. Deve ser chamada com False no início e com true no final do bloco.
if Tipo then Result:=TimeToStr(Time - XTempoIni)
else begin
XTempoIni:=Time;
Result:=´´;
end;
end;
GOSTEI 0
Gurc
09/11/2004
O nome da função no DateUtils é MilliSecondsBetween. Ela não é tão precisa. A da API do Windows é GetTickCount que retorna um cardinal.
Tente usar a segunda.
Até mais,
Gustavo Royer Chaurais
Tente usar a segunda.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0
Osocram
09/11/2004
O nome da função no DateUtils é MilliSecondsBetween. Ela não é tão precisa. A da API do Windows é GetTickCount que retorna um cardinal.
Tente usar a segunda.
Até mais,
Gustavo Royer Chaurais
como o Gurc disse use GetTickCount q eh mais preciso... pois se a sua funcao exigir d+ do processamente o relogio pod atrazar.... pois eh o processador q controla o relogio e ele estiver ocioso fazendo outra coisa... o relogio fica parado
GOSTEI 0
Gurc
09/11/2004
[quote:046453aec7=´gurc´]O nome da função no DateUtils é MilliSecondsBetween. Ela não é tão precisa. A da API do Windows é GetTickCount que retorna um cardinal.
Tente usar a segunda.
Até mais,
Gustavo Royer Chaurais
como o Gurc disse use GetTickCount q eh mais preciso... pois se a sua funcao exigir d+ do processamente o relogio pod atrazar.... pois eh o processador q controla o relogio e ele estiver ocioso fazendo outra coisa... o relogio fica parado[/quote:046453aec7]
Exatamente, osocram... é isso aí! :D
GOSTEI 0
Tap_pedroso
09/11/2004
ontem eu fiz o seguinte:
logo no inicio do codigo eu carreguei uma variarel com a hara atual e no fim eu carreguei outra com a hora atual tambem aí eu subtrai as horas e parace q deu certo mas vou testar com o GetTickCount.
valeu pessoal :lol:
logo no inicio do codigo eu carreguei uma variarel com a hara atual e no fim eu carreguei outra com a hora atual tambem aí eu subtrai as horas e parace q deu certo mas vou testar com o GetTickCount.
valeu pessoal :lol:
GOSTEI 0
Tap_pedroso
09/11/2004
eu fiz um teste da seguite maneira:
é isso mesmo ele me retorna em milisegundos?
var i:integer; begin edit1.Text:=floattostr(GetTickCount); for i:=0 to 100000 do begin edit2.Text:=inttostr(i); end; edit3.Text:=floattostr(GetTickCount); edit4.Text:=floattostr(strtofloat(edit3.Text)-strtofloat(edit1.Text)); end;
é isso mesmo ele me retorna em milisegundos?
GOSTEI 0
Gurc
09/11/2004
eu fiz um teste da seguite maneira:
é isso mesmo ele me retorna em milisegundos?
var i:integer; begin edit1.Text:=floattostr(GetTickCount); for i:=0 to 100000 do begin edit2.Text:=inttostr(i); end; edit3.Text:=floattostr(GetTickCount); edit4.Text:=floattostr(strtofloat(edit3.Text)-strtofloat(edit1.Text)); end;
Isso, pode ser feito assim e retorna em milisegundos mesmo.
GOSTEI 0
Xtreme
09/11/2004
faz o seguinte:
var time1 : tdatetime; time2 : tdatetime; begin time1:=time; for <> to <> do begin end; time2:=time; time1:=time1-time2; showmessage(formatdatetime(´hh:mm:ss:zzz´,time1)); end;
GOSTEI 0
Tatuweb
09/11/2004
Existem três APIs do Windows que trabalham em conjunto e foram desenvolvidas especialmente para esse tipo de cálculo. No primeiro link abaixo vc encontra a explicação e no segundo link o código-fonte.
[b:2af94a9c0d]Explicação da API:[/b:2af94a9c0d]
http://www.latiumsoftware.com/br/pascal/0047.php#5
[b:2af94a9c0d]Exemplo. Procure dentro da pasta HighAccuracyTimer:[/b:2af94a9c0d]
http://www.latiumsoftware.com/br/pascal/p0047.zip
[b:2af94a9c0d]Explicação da API:[/b:2af94a9c0d]
http://www.latiumsoftware.com/br/pascal/0047.php#5
[b:2af94a9c0d]Exemplo. Procure dentro da pasta HighAccuracyTimer:[/b:2af94a9c0d]
http://www.latiumsoftware.com/br/pascal/p0047.zip
GOSTEI 0