[ C ] calcular tempo decorrido

Nausea

Power Member
Boas queria calcular o tempo decorrido de um determinado momento até outro por exemplo o tempo de um for() mas em milisegundos ou coisa assim parecida eu tentei com a função times() mas dá-me sempre 0 segundos devido ao ciclo for() ser executado rapidamente.
 
Se for em windows podes fazer assim:
Código:
#include <stdio.h>
#include <windows.h>

int main()
    {
    LARGE_INTEGER inicio, fim, freq;
    
    // Inicia o temporizador
    QueryPerformanceCounter( &inicio );
    
    // O código...
    int x;
    for(x = 0; x <= 1000; x++)
        printf("%d\n", x);
    
    // Termina o temporizador
    QueryPerformanceCounter( &fim ); 
    
    // Calcula o tempo decorrido
    float tempo_total = (float)( fim.QuadPart - inicio.QuadPart ) / freq.QuadPart;
    
    printf( "%f\n", tempo_total );
    
    return 0;
    }
 
Com o time.h têm-se apenas precisão de 1 segundo que não serve para o que ele quer.
Para ser na ordem dos milisegundos têm que ser específico do SO, mas não sei como é em linux.
 
Código:
#include <iostream>
#include <sys/time.h>                // for gettimeofday()
using namespace std;

int main()
{
    timeval t1, t2;
    double elapsedTime;

    // start timer
    gettimeofday(&t1, NULL);

    // do something
    ...

    // stop timer
    gettimeofday(&t2, NULL);

    // compute and print the elapsed time in millisec
    elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0;      // sec to ms
    elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0;   // us to ms

[COLOR=Red][B]-->[/B][/COLOR] elapsedTime = (t2.tv_usec - t1.tv_usec) / (1000*1000);
    //isto supostamente se eu imprimir dava algo do genero? "0.001 Segundos"
    cout << elapsedTime << " ms.\n";

    return 0;
}
 
Back
Topo