[Risolto] Calcolo tempo di esecuzione

di Anonimizzato15698 il
10 risposte
Salve ragazzi avrei bisogno di una mano

Devo calcolare il tempo di esecuzione tramite time() (ho letto che clock() sarebbe meglio ma c'è stata una richiesta specifica da parte del prof)
Avevo trovato vagando nel web questo codice:
	
time_t dtime;
time_t now;
now=time(NULL);
	
.....
.....
	
dtime=difftime(time(NULL),now);
printf("\nTempo di calcolo totale in secondi: %ld\n",dtime);
Ma l'output è sempre negativo! non riesco a capire come mai
Qualcuno sa darmi una spiegazione?

10 Risposte

  • Forse dipende dal fatto che il risultato della difftime è un double e tu lo stampi con %ld. Prova con %f o %g.
  • E quindi deve essere

    double dtime;
  • oregon ha scritto:


    E quindi deve essere

    double dtime;
    Ah giusto, anche quello!

    Come sempre, oregon =
  • Inserendo entrambe le modifiche smette di darmi un numero negativo ma mi dà zero.
    Ho provato ad aumentare le cifre mostrate dopo la virgola fino a 50, ma nulla!
  • The value returned generally represents the number of seconds since 00:00 hours, Jan 1, 1970 UTC (i.e., the current unix timestamp).
    Mi sembra di capire che la precisione sia quella di 1 secondo. Quindi puoi avere 0 secondi, 1 secondo, 2 secondi, ecc. Almeno così credo.

    Se vuoi una maggiore precisione, puoi effettivamente sfruttare la funzione clock, come in questo piccolo esempio:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(int argc, char const *argv[])
    {
    	clock_t before = clock();
    	clock_t after;
    
    	int i=0;
    	while(i != 200000000)
    		++i;
    
    	after = clock();
    
    	printf("Tempo trascorso: %f\n", (double)(after-before)/CLOCKS_PER_SEC);
    
    	return 0;
    }
    
  • @Mimonic i double si visualizzno con "%lf". Ma che compilatore usi che non ti da il warning?

    Ti da zero perché molto probabilmente non passa un secondo...
  • vbextreme ha scritto:


    @Mimonic i double si visualizzno con "%lf". Ma che compilatore usi che non ti da il warning?
    Questa mi è nuova, e a quanto pare non solo a me: link. %lf è ok ma anche %f è corretto.
  • Forse ho mangiato della "chocolate banana"...
  • Rinuncio alla funzione time e uso clock, ho deciso!
    Grazie a tutti per l'aiuto
  • Ti conviene decisamente!

Devi accedere o registrarti per scrivere nel forum
10 risposte