Ir ao conteúdo

Medir tempo de execução em C?


Sakomura

Posts recomendados

Postado

Olá Pessoal , tudo bem?

O meu problema é o seguinte:

Eu preciso medir o tempo de execução de um programa em C. O meu programa consiste em inserir 1000 elementos em um vetor e depois ordenar usando o Quicksort. O meu professor falou p/ usar a função gettimeofday() , mas li em vários lugares que essa função só funciona pra Linux. Isso é verdade?? Se for , vocês teriam outra função que seja de mesma finalidade (tempos em ms)?

Agradeço a atenção!

Postado

Sim, essa função gettimeofday só funciona em Unix-like F5Rua4D.gif.

Um outro jeito de fazer isso é com a função padrão clock e a macro CLOCKS_PER_SEC:


#include <stdio.h>
#include <time.h>



int main(void)
{
clock_t Ticks[2];
Ticks[0] = clock();
//O código a ter seu tempo de execução medido ficaria neste ponto.
Ticks[1] = clock();
double Tempo = (Ticks[1] - Ticks[0]) * 1000.0 / CLOCKS_PER_SEC;
printf("Tempo gasto: %g ms.", Tempo);
getchar();
return 0;
}

Espero ter ajudado GbhmuXl.gif.

Postado

testei aqui , mas ele ta aparecendo o tempo em segundos né? Fiz o teste dentro de um FOR 10 vezes e todos os tempos deram 0. Tem jeito de alterar esse código pra aparecer em milisegundos? Tipo assim -> 0.00023 ?

Postado

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv)
{
clock_t tempo;
tempo = clock();

// código de teste
for(int i = 0; i < 99999999; ++i){}
//fim
printf("Tempo:%f",(clock() - tempo) / (double)CLOCKS_PER_SEC);
}

Postado
testei aqui , mas ele ta aparecendo o tempo em segundos né? Fiz o teste dentro de um FOR 10 vezes e todos os tempos deram 0. Tem jeito de alterar esse código pra aparecer em milisegundos? Tipo assim -> 0.00023 ?

Já está em milissegundos F5Rua4D.gif.

O tempo de execução do código que você escolheu analisar deve ser tão pequeno que a função clock (ou o relógio do sistema) não consegue calculá-lo com precisão suficiente.

Se você quer fazer benchmarks, aumente muito o tempo de execução do seu código e de referenciais na mesma proporção. Depois, compare-os.

Espero ter ajudado GbhmuXl.gif.

Postado

Obrigado rjjj! Eu achei outra função de medir tempo : QueryPerformanceCounter

Parece que ela é mais precisa do que as outras...

Mas agradeço de coração!

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!