2
times()関数を使用して値を測定していますが、私のアプローチが正しいかどうかわかりません。あなたはfork()
への呼び出しの前にtimes(&tms_start)
を呼び出す必要があります外観とアドバイスLinuxでのexec()プロセスの測定時間
struct tms tms_start, tms_end;
if (!(pid=fork()))
{
//some necessary operations here
times(&tms_start);
execl(...);
}
else if (pid)
{
//in parent
int status;
wait(&status);
times(&tms_end);
if (WIFEXITED(status))
{
if(WEXITSTATUS(status)==0)
{
clock_t real = tms_end.tms_cstime - tms_start.tms_stime
float running_time = real/(double)sysconf(_SC_CLK_TK);
}
}
}
わかりました。だからこの違いの計算は正しいと思いますか? clock_t real = tms_end.tms_cstime - tms_start.tms_stime – user108127
子プロセスに代わってカーネルが費やした時間を測定する場合は、式が正しい。ただし、プロセス自体が使用するCPU時間を測定する(可能性が高い)場合は、tms_cutimeおよびtms_utimeを使用します。実際の壁掛け時間を測定したい場合は、times()をまったく使用せず、代わりにtime()またはgettimeofday()を使用してください。 –
とどこに行くのですか? – User