1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por s e 7 e n, 23 de Junho de 2008. (Respostas: 5; Visualizações: 3768)

  1. s e 7 e n

    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:

    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?
     
  2. Usa o cout.precision(2) antes de imprimires.
     
  3. jahred

    jahred Power Member

    esquece.... faz o que o skazi disse...
     
  4. s e 7 e n

    s e 7 e n Power Member

    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.
     
  5. n3oNx

    n3oNx Power Member

    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.
     
  6. s e 7 e n

    s e 7 e n Power Member

    É mesmo parte do programa :D
    Tenho que calcular quanto tempo demoram certas funções a correr.
     

Partilhar esta Página