| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
erfurby Cdt

Registrado: 22 Feb 2005Mensajes: 13
|
Publicado: Lun 04 Abr, 2005 7:50 am Asunto: Operaciones de tiempo |
|
|
Wenas otra vez, necesitaría poder calcular el tiempo entre dos puntos determinados, lo que hago es declarar una structura time (librería sos.h) y obtener los dos puntos de tiempo con gettime.
Existe funcion que me devuelva la diferencia entre dos variables de tipo time?
Gracias... |
|
| Volver arriba |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Lun 04 Abr, 2005 9:30 pm Asunto: |
|
|
ahora estoy en el trabajo, a la noche me conecto desde casa y te la paso
saludos!!! _________________ Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio) |
|
| Volver arriba |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Lun 04 Abr, 2005 11:02 pm Asunto: |
|
|
Hola. Yo utilizo las siguientes funciones para medir tiempos, seguro que te pueden dar una idea sobre lo que preguntas: | Código: | AnsiString TiempoDelProceso(AnsiString proceso, bool inicio) {
static System::TDateTime instanteAnterior;
System::TDateTime instanteActual;
instanteActual = instanteActual.CurrentTime();
AnsiString s = inicio ? "Inicio" : "Fin";
s += " del proceso <" + proceso + ">: " + instanteActual.TimeString() + " ";
if (!inicio)
s += " (" + TiempoTranscurrido(instanteActual, instanteAnterior) + ")";
instanteAnterior = instanteActual;
return s;
}
//---------------------------------------------------------------------------------//
AnsiString TiempoTranscurrido(TDateTime instanteActual, TDateTime instanteAnterior) {
__int64 milisegundos = MilliSecondsBetween(instanteActual, instanteAnterior)%1000;
__int64 segundos = SecondsBetween(instanteActual, instanteAnterior);
__int64 minutos = MinutesBetween(instanteActual, instanteAnterior);
__int64 horas = HoursBetween(instanteActual, instanteAnterior);
AnsiString s;
if (horas)
s += AnsiString(horas) + "h. ";
if (minutos)
s += AnsiString(minutos % 60) + "m. ";
if (segundos)
s += AnsiString(segundos % 60) + "s. ";
if (milisegundos)
s += AnsiString(milisegundos) + "ms.";
return s;
} | Creo que basta con incluir las librerías SysUtils.hpp y DateUtils.hpp para que compile.
Las utilizo para escribir el AnsiString que generan en un TRichEdit en el que voy escribiendo ciertos eventos del proceso. Por ejemplo, cuando voy a ejecutar un algoritmo, justo antes de iniciar el algoritmo escribo | Código: | reLOG_UW->Lines->Add(TiempoDelProceso("Apriori", true)); | y justo al terminarlo escribo | Código: | reLOG_UW->Lines->Add(TiempoDelProceso("Apriori", false)); |
Ya nos dirás si sacaste algo útil. Suerte. _________________ Ojos ... no son ojos porque los ves, son ojos porque te miran |
|
| Volver arriba |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Mar 05 Abr, 2005 3:48 am Asunto: |
|
|
Aqui tienes una forma mas simple si quieres
#include <time.h>
clock_t start,end;
start=clock(); //inicia conteo.
for(; /// ciclo que quieras
{
}
end=clock(); //fin conteo.
Label1->Caption=AnsiString((end-start)/CLK_TCK)+" Seg.";
Saludos!!!! _________________ Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio) |
|
| Volver arriba |
|
 |
|