いくつかのコードを実行するのにかかるシステム時間を測定したいと思います。これを行うには...私はサンドイッチを2回の呼び出しの間のコードは)(GETRUSAGEからと言われますけど、私はいくつかの予期しない結果を得るCでのシステム時間を測定するためのgetrusage()の取得
#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つの異なる番号を生成することを望んでいるだろう!私は()右GETRUSAGEからを使用していない
Started at: 0.1999s
Ended at: 0.1999s
アム:私のコンピュータは1秒か2秒のために考えて見た後、これが結果ですか?なぜこれらの2つの数字が違ってはならないのですか?私が根本的に間違っている場合、getrusage()を使用してソースコードのシステム時間を測定する別の方法がありますか?読んでくれてありがとう。
'tv_usec'はマイクロ秒ですので、フォーマットは'%lu。%06u'でなければなりません。 – Mapio