0

独自の Makefile でコンパイルされたアプリケーションがたくさんあります。ランタイムを測定する最良の方法を教えてください。Linuxで「time」コマンドを試しましたが、結果の精度と安定性はそれほど高くありません。また、clock_gettime() 関数を追加しようとしましたが、それに関連する 2 つの問題がありました。1) これを行うには、アプリケーションの数が多すぎます。2) すべてのアプリケーションに clock_gettime() を追加できたとしても、Makefile に「-lrt」を追加する方法がわかりません。

ありがとう

4

2 に答える 2

1

私は gettimeofday() を使用して、ubuntu での実行時間を正常に計っています。

#include <sys/time.h>

int main()
{
float msec=0;
struct timeval start,end;
char* persons[] = {"5#8","5#7","6#0","5#7"};

//printf("%d",get_height(persons));

gettimeofday(&start,NULL);
for(int z=0;z<20000;z++)
    get_height(persons);
usleep(1000000);
gettimeofday(&end,NULL);

msec = (end.tv_sec-start.tv_sec)*1000 + (end.tv_usec-start.tv_usec)/(float)1000;
printf("avg time taken: %0.2f\n",msec/(float)20000);

}
于 2013-08-09T18:30:58.843 に答える
0

time(7)のマニュアルページを読んでください。

そして最も重要なことは、ベンチマークしたいプログラムを数回実行することです。たまたまファイルにアクセスした場合 (これはよくあることです)、ファイルはシステム キャッシュにある可能性があります (アクセスが高速です)。

time(1)で十分だと思います。多くのオプションがあります。また、少なくとも 3 ~ 4 回は実行を繰り返す必要があります。おそらくtime あなたのプログラムまたは/usr/bin/time -v あなたのプログラムを試してください

clock_gettime(2)は、一部のプログラム内でのみ必要です (それを呼び出すように変更します)。最近のカーネルとlibc(例: カーネル 3.9 と libc 2.17) では、それを取得するためにリンクする必要はもうありません-lrt(現在は にありますlibc) 。

gettimeofdayまたはを使用することもできますclock

于 2013-08-09T18:30:49.837 に答える