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.

questionAnswers(3)

yourAnswerToTheQuestion