[C++] Tempo que uma função demora a executar

s e 7 e n

Power Member
Boas
Ando aqui as voltas para conseguir meter isto a trabalhar...
Quero saber quando tempo demora uma determinada função demora a executar, mas quero um output tipo 2.42347 segundos e não 2 segundos.

Se usar uma coisa deste genero:
Código:
/* difftime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t start,end;
  double dif;

  time (&start);
  //CODIGO...
  time (&end);

  dif = difftime (end,start);
  cout << "It took " << dif << " seconds";
 
  return 0;
}
Codigo do site C++ alterado

Dá-me uma coisa do genero 2 segundos
Na versão original do codigo mostrava correctamente, mas tinha diferenças:

printf ("It took you %.2lf seconds to type your name.\n", dif );

O problema esta que eu não sei converter o %.2lf que esta no printf para cout...


Mas tinha aqui outro exemplo de codigo que pensava que estava a trabalhar bem, porque foi o prof de outra cadeira que tinha arranjado o source.

Código:
 clock_t T1,T2;

T1=clock();
 multiply_matrices_C((unsigned short *)A,(unsigned short *)B,(unsigned int *)C,m,n,s); 
 T2=clock();
 //Verificacao e Resultados 
 printf("A sua rotina executou em %6.3f segundos.",(((double)(T2-T1))/CLOCKS_PER_SEC));

Aqui mesmo usando um cout sem o %6.3f mostra-me como eu quero, mas o tempo não esta correcto, porque diz que demorou por exemplo 0.2344 segundos e eu sei que devem ter sido uns 2 segundos a executar...

Alguem sabe de uma boa maneira para solucionar isto?
 
Thanks
Mas ainda não esta a trabalhar :D
Usando o time_t e depois o difftime, só faz return de segundos, ou seja nunca obtenho o que quero.
Tenho mesmo que usar o clock_t.
 
Mas o tempo que queres saber é só para efeitos de debug ou representa uma parte importante do programa? É porque se estiveres em linux e for só para debug podes usar o comando time antes da chamada da função.
 
Back
Topo