Mai mult ca sigur ca ai facut vreo greseala de calcul :-) (daca nu 
diferenta gresita, atunci o eroare de rotunjire, etc.). Uite un exemplu 
cum sa intorci secundele ca double (ex. poti sa ai problema de care 
pomeneai daca folosesti float in loc de double):

double current_time_sec()
{
     struct timeval time;

     if( gettimeofday(&time, NULL) == -1 ) {
         perror("gettimeofday");
         exit(1);
     }

     return ( (double) time.tv_sec  +
              (double) time.tv_usec / 1000000.0 );
}


gettimeofday iti da doar timpul absolut. Poate vrei sa folosesti si 
getrusage, care iti da user time, system time etc. Uite un exemplu:

void get_time( double* ut, double* st )
{
     struct rusage rbuff;

     if( getrusage (RUSAGE_SELF, &rbuff) != 0 ) {
         perror("getrusage");
         exit(1);
     }

     *ut = ( (double) (rbuff.ru_utime).tv_sec +
             (double) (rbuff.ru_utime).tv_usec / 1000000.0 );
     *st = ( (double) (rbuff.ru_stime).tv_sec +
             (double) (rbuff.ru_stime).tv_usec / 1000000.0 );
}


-iulian

Gabriel Moruz 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?
> 
> Numai bine,
> /Gabi
> 
> 
> --- 
> Detalii despre listele noastre de mail: http://www.lug.ro/
> 
> 
> 


--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui