Obtendo getrusage () para medir o tempo do sistema em C
Eu gostaria de medir o tempo do sistema necessário para executar algum código. Para fazer isso, eu sei que colocaria o dito código entre duas chamadas para getrusage (), mas obtenho alguns resultados inesperados ...
<code>#include <sys/time.h> #include <sys/resource.h> #include <unistd.h> #include <stdio.h> int main() { struct rusage usage; struct timeval start, end; int i, j, k = 0; getrusage(RUSAGE_SELF, &usage); start = usage.ru_stime; for (i = 0; i < 10000; i++) { /* Double loop for more interesting results. */ for (j = 0; j < 10000; j++) { k += 20; } } getrusage(RUSAGE_SELF, &usage); end = usage.ru_stime; printf("Started at: %ld.%lds\n", start.tv_sec, start.tv_usec); printf("Ended at: %ld.%lds\n", end.tv_sec, end.tv_usec); return 0; } </code>
Eu espero que isso produza dois números diferentes, mas ai! Depois de ver meu computador pensar por um segundo ou dois, este é o resultado:
<code>Started at: 0.1999s Ended at: 0.1999s </code>
Eu não estou usando getrusage () certo? Por que esses dois números não deveriam ser diferentes? Se eu estiver fundamentalmente errado, há outra maneira de usar getrusage () para medir o tempo do sistema de algum código-fonte? Obrigado por ler.