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/