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/


Raspunde prin e-mail lui