C++: Medindo intervalo de tempo em milissegundos no Linux, exemplo rápido

1 segundo / 1000 = 1 milissegundo
1 segundo / 1000000 = 1 microssegundo

#include <iostream>
#include <sys/time.h>
using namespace std;

int main()
{
    struct timeval Inicio, Fim;
    double Segundos, Milissegundos, Microssegundos;

    /* Coleta a data de inicio do processo */
    gettimeofday(&Inicio, NULL);

    /*
     * Seu programa faz alguma coisa,
     * nesse caso ele só faz esperar 2 segundos
     */
    sleep(2);

    /* Coleta a data de fim do processo*/
    gettimeofday(&Fim, NULL);

    /* Calcula o espaço de tempo */
    Segundos = Fim.tv_sec - Inicio.tv_sec;
    Microssegundos = Fim.tv_usec - Inicio.tv_usec;

    /* Transforma segundos e microssegundos em milissegundos */
    Milissegundos = Segundos * 1000 + Microssegundos / 1000;

    cout << "O programa demorou " << Milissegundos << " milissegundos" << endl;
}

A saída será mais ou menos esta:

O programa demorou 2000.07 milissegundos

Para compilar use:

$ g++ -i nome_do_executável nome_do_arquivo_fonte.cpp

Dúvidas? Deixe um comentário.

Foi usado como referência:
http://pt.wikipedia.org/wiki/Segundo
http://stackoverflow.com/questions/588307/c-obtaining-milliseconds-time-on-linux-clock-doesnt-seem-to-work-properly/588377#588377

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s