TuLKaS85
10-04-2009, 11:52
ho un problema, devo testare il tempo di esecuzione di una funzione in C, utilizzo code::blocks sotto windows e come compilatore usao gcc.
utilizzando questi metodi ottengo sempre ke la differenza tra lo start() e lo stop() è nulla, quindi c'è bisogno di una routine che calcoli il tempo in unità di misura più piccole...
ecco il primo metodo precisione millisecondi:
#include <sys\timeb.h>
-------
struct timeb t_start, t_current;
int t_diff;
ftime(&t_start);
// FUNZIONE DA TESTARE
ftime(&t_current);
t_diff = (int) (1000.0 * (t_current.time - t_start.time)+ (t_current.millitm - t_start.millitm));
printf("Time: %d\n",t_diff);
il secondo precisione (forse) secondi:
#include <time.h>
-------
clock_t seconds,seconds2;
seconds = clock();
//FUNZIONE DA TESTARE
seconds2 = clock();
printf("Time: %.3f \n",((double)(seconds2-seconds)/( (double)CLOCKS_PER_SEC)));
con entrambi i metodi ottengo sempre 0 come risultato....
utilizzando questi metodi ottengo sempre ke la differenza tra lo start() e lo stop() è nulla, quindi c'è bisogno di una routine che calcoli il tempo in unità di misura più piccole...
ecco il primo metodo precisione millisecondi:
#include <sys\timeb.h>
-------
struct timeb t_start, t_current;
int t_diff;
ftime(&t_start);
// FUNZIONE DA TESTARE
ftime(&t_current);
t_diff = (int) (1000.0 * (t_current.time - t_start.time)+ (t_current.millitm - t_start.millitm));
printf("Time: %d\n",t_diff);
il secondo precisione (forse) secondi:
#include <time.h>
-------
clock_t seconds,seconds2;
seconds = clock();
//FUNZIONE DA TESTARE
seconds2 = clock();
printf("Time: %.3f \n",((double)(seconds2-seconds)/( (double)CLOCKS_PER_SEC)));
con entrambi i metodi ottengo sempre 0 come risultato....