いくつかのコードを実行するのにかかるシステム時間を測定したいと思います。これを行うには、getrusage() への 2 つの呼び出しの間に上記のコードを挟むことになると思いますが、予期しない結果が得られます...
#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;
}
これで 2 つの異なる数値が生成されることを願っていますが、残念です。コンピューターが 1 ~ 2 秒考えると、結果は次のようになります。
Started at: 0.1999s
Ended at: 0.1999s
私は getrusage() を正しく使用していませんか? これらの 2 つの数値が異なってはならないのはなぜですか? 私が根本的に間違っている場合、 getrusage() を使用してソースコードのシステム時間を測定する別の方法はありますか? 読んでくれてありがとう。