※ ChatGPTを利用し、要約された質問です(原文:UNIX times関数を用いた時間計測)
UNIX times関数を使った時間計測
このQ&Aのポイント
UNIX times関数を使用したプログラムの実行時間を詳細に計測する方法を教えてください。
times関数を使えば実行中のプロセスや子プロセスが消費したユーザCPU時間とシステムCPU時間を取得できます。
sysconf()でクロック時間を得ることまではできましたが、どうすればより詳細な時間計測ができるかアドバイスをお願いします。
以下のようなforkを使用したプログラムの実行時間を計測したいのですが、times関数の使用方法がわかりません。
gettimeofdayを用いて物理的な実行時間を計測することは出来たのですが、
それでは不充分なので、もっと詳細に計測したいのです。
times関数を用いると
・実行中のプロセスが消費したユーザCPU時間
・実行中のプロセスが消費したシステムCPU時間
・子プロセスが消費したユーザCPU時間
・子プロセスが消費したシステムCPU時間
がわかりますよね?sysconf()でクロック時間を得るところまでは出来たのですが、アドバイスお願いします。
#include <stdio.h>
#include <sys/time.h>
#include <sys/times.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int val ;
struct timeval tv,tw;
gettimeofday(&tv,NULL);
time = times(&t);
switch(fork()) {
case 0:
exit(0) ;
case -1:
perror("child process") ;
break;
default:
wait(&val) ;
}
gettimeofday(&tw,NULL);
time = tw.tv_usec - tv.tv_usec;
printf("child PID = %d\n",cpid);
printf("val = %d\n");
printf("%ldus\n",time);
}