2
Ich verwende die times() -Funktion, um den Wert zu messen, aber ich bin mir nicht sicher, ob meine Vorgehensweise korrekt ist. Bitte haben Sie einen Blick und BeratungMesszeit von einem exec() - ed Prozess unter Linux
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);
}
}
}
Ah ich sehe. Also diese Differenzberechnung ist richtig, denke ich? clock_t real = tms_end.tms_cstime - tms_start.tms_time – user108127
Wenn Sie die Zeit messen wollen, die der Kernel im Auftrag des untergeordneten Prozesses benötigt, ist Ihr Ausdruck korrekt. Wenn Sie jedoch (wahrscheinlich) die vom Prozess selbst benötigte CPU-Zeit messen möchten, verwenden Sie tms_cutime und tms_utime. Oder, wenn Sie die tatsächliche Wanduhrzeit messen möchten, verwenden Sie nicht mal() und stattdessen Zeit() oder gettimeofday(). –
und wo hört auf zu gehen? – User