[Risolto] Calcolo tempo di esecuzione

di il
10 risposte

[Risolto] Calcolo tempo di esecuzione

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

  • Re: [Risolto] Calcolo tempo di esecuzione

    Forse dipende dal fatto che il risultato della difftime è un double e tu lo stampi con %ld. Prova con %f o %g.
  • Re: [Risolto] Calcolo tempo di esecuzione

    E quindi deve essere

    double dtime;
  • Re: [Risolto] Calcolo tempo di esecuzione

    oregon ha scritto:


    E quindi deve essere

    double dtime;
    Ah giusto, anche quello!

    Come sempre, oregon =
  • Re: [Risolto] Calcolo tempo di esecuzione

    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!
  • Re: [Risolto] Calcolo tempo di esecuzione

    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;
    }
    
  • Re: [Risolto] Calcolo tempo di esecuzione

    @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...
  • Re: [Risolto] Calcolo tempo di esecuzione

    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.
  • Re: [Risolto] Calcolo tempo di esecuzione

    Forse ho mangiato della "chocolate banana"...
  • Re: [Risolto] Calcolo tempo di esecuzione

    Rinuncio alla funzione time e uso clock, ho deciso!
    Grazie a tutti per l'aiuto
  • Re: [Risolto] Calcolo tempo di esecuzione

    Ti conviene decisamente!

Devi accedere o registrarti per scrivere nel forum
10 risposte