Tempo do relógio físico
No exemplo abaixo é demonstrado como obter o tempo (do relógio físico) que o aplicativo demorou até ser encerrado.
#include <stdio.h>
#include <sys/time.h>
void para_demorar() {
printf("Pressione ENTER para prosseguir\n");
while (1) {
if (getchar())
break;
}
}
int main(int argc, char **argv) {
struct timeval inicio, fim;
// Iniciando tomada de tempo
gettimeofday(&inicio, 0);
para_demorar();
// Finalizando tomada de tempo
gettimeofday(&fim, 0);
long seg = fim.tv_sec - inicio.tv_sec;
long mseg = fim.tv_usec - inicio.tv_usec;
double tempo_total = seg + mseg * 1e-6;
printf("Tempo gasto: %f segundos.\n", tempo_total);
return 0;
}
Tempo gasto de CPU
No exemplo anterior foi demonstrado como saber o tempo que uma aplicação demorou para ser executado, considerando um relógio físico. Nessa seção é apresentado um exemplo de como medir o tempo que a CPU ficou ocupada processando as instruções da aplicação. Cabe citar, que o tempo gasto com operações de entrada e saída bloqueantes não será computado como tempo que o CPU ficou ocupado.
#include <stdio.h>
#include <sys/time.h>
void para_demorar() {
printf("Pressione ENTER para encerrar\n");
while (1) {
if (getchar())
break;
}
}
int main(int argc, char **argv) {
//https://www.gnu.org/software/libc/manual/html_node/CPU-Time.html
clock_t start, end;
double cpu_time_used;
// Iniciando tomada de tempo
start = clock();
para_demorar();
// Finalizando tomada de tempo
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Tempo gasto de CPU: %f segundos.\n", cpu_time_used);
return 0;
}