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 ...

#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;
}

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:

Started at: 0.1999s
Ended at: 0.1999s

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.