On 02 Dec 2003 13:36:22 -0500
Gabriel Moruz <[EMAIL PROTECTED]> wrote:
> Salutare,
>
> Am o problema cu gettimeofday. Mai precis, vreau sa aflu timpul de
> executie al unei functii (care e suficient de mare, peste o sec). Am
> incercat cu gettimeofday inainte si dupa apelul functiei, iar cand am
> facut diferenta dintre cele 2 valori am avut surpriza sa obtin o
> valoare negativa, total diferita de time. Ceva idei sau alternative?
salut,
mai mult ca sigur ai facut gresit scaderea. Ideea e ca tv_usec poate fi
mai mare decat 1000000 fara ca tv_sec sa se incrementeze.
Scaderea o faci corect cam asa:
#define USEC_PER_SEC 1000000
--------------------------------------------------
/**
* struct timeval c = a - b
*/
void tv_sub(struct timeval * a, struct timeval * b, struct timeval * c)
{
unsigned int nsec;
struct timeval tmp;
tmp.tv_sec = b->tv_sec;
tmp.tv_usec = b->tv_usec;
if (a->tv_usec < tmp.tv_usec)
{
nsec = (tmp.tv_usec - a->tv_usec) / USEC_PER_SEC + 1;
tmp.tv_usec -= USEC_PER_SEC * nsec;
tmp.tv_sec += nsec;
}
if (a->tv_usec - tmp.tv_usec > USEC_PER_SEC)
{
nsec = (a->tv_usec - tmp.tv_usec) / USEC_PER_SEC;
tmp.tv_usec += USEC_PER_SEC * nsec;
tmp.tv_sec -= nsec;
}
c->tv_sec = a->tv_sec - tmp.tv_sec;
c->tv_usec = a->tv_usec - tmp.tv_usec;
}
------------------------------------------------
vls
---
Detalii despre listele noastre de mail: http://www.lug.ro/