Como posso vez que meu programa C?
Pergunta
Eu olhei através tópicos antigos, mas não conseguiu encontrar a resposta para a minha pergunta:
Como posso tempo o corpo da minha função dentro de um programa C?
Solução
Um método simples é usar a função 'relógio':
#include <time.h>
clock_t start, end;
double cpu_time_used;
start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
Ou se você estiver em linux você pode usar o comando 'tempo' ao tempo quanto tempo leva seu aplicativo para executar; isso não permitem que uma seção de código específico, porém, e inclui o tempo necessário para iniciar o processo etc.
time ./myapp
Edit: Este é muito mais uma abordagem básica 'hack-in-a-quick-temporizador'. Para verdadeiro desempenho de perfil você quer olhar para um profiler adequada, como sugerido por Larry Watanabe.
Outras dicas
Depende do seu compilador e OS. Em estações de trabalho Sun, eu costumava usar "prof" ou "gprof". Não é certamente uma ferramenta de perfil para o seu compilador, OS, e máquina - apenas google "yourOS perfil C yourcompiler" (substitua o nome do seu sistema operacional e seu compilador)
O método básico está usando a função de relógio (), que é onde nós tudo começou.
Ex:.
clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);
No entanto, quando você começar a aprender sobre sistemas operacionais, hardware, programadores, multi-threading, etc Você percebeu que o tempo de execução é algo muito subjetivo. Quando você quiser medir o desempenho (que não é necessariamente o tempo de execução médio), então você precisa de ferramentas mais robustas.
gprof é realmente fácil de usar C profiler, o que poderia ajudá-lo a entender melhor o conceito de desempenho.
time ./a.out
executar acima de um e de saída será:
real 0m0.017s
user 0m0.017s
sys 0m0.000s
real
: fim total ao tempo final tomada pelo programa / comando
user
:. Tempo gasto no modo usuário
sys
: Tempo gasto no modo kernel
Não tenho certeza sobre nomes de funções específicas em C, mas uma prática comum é armazenar um timestamp microssegundo antes de o corpo começa, em seguida, pegue outra no final e subtrair.