многопоточность — C ++ вычисляет точное время процессора для процесса в многопоточных экспериментальных настройках

Я запускаю тесты для алгоритма C ++ на 6-ядерном компьютере с Ubuntu. Я хотел бы для каждого теста измерить точное время процессора, необходимое ТОЛЬКО для этого процесса тестирования, а не для других тестов или компьютерных процессов, работающих на той же машине. Для этого я сейчас использую этот класс:

#include <time.h>
#include <sys/times.h>
#include <iostream>

struct stopwatch
{

clock_t tstart;
clock_t tprevlap;
clock_t tlap;
tms ustart;
tms uprevlap;
tms ulap;
unsigned int clk_tk;

stopwatch() :
tstart(clock()), // clock()
tprevlap(tstart),
tlap(tstart),
ustart(),
uprevlap(),
ulap(),
clk_tk(sysconf(_SC_CLK_TCK))
{
times(&ustart);
std::copy(&ustart, &ustart + 1, &uprevlap);
std::copy(&ustart, &ustart + 1, &ulap);
};

void lap()
{
std::copy(&ulap, &ulap + 1, &uprevlap);
tprevlap = tlap;
times(&ulap);
tlap = clock();
}

double partial_user_time()
{
return ((double)ulap.tms_utime-ustart.tms_utime)/clk_tk;
}

double lap_user_time()
{
return ((double)(ulap.tms_utime-uprevlap.tms_utime))/clk_tk;
}
};

Учитывая процесс A, что именно измеряет функция clock ()?

  1. процессорное время, требуемое только процессом A (это то, что я хотел бы иметь …)
  2. процессорное время, необходимое для всех процессов, запущенных в одном потоке процесса A
  3. время процессора, необходимое для всех процессов во всех потоках машины

Например. если секундомер вычисляет 100 секунд для теста A, когда тест A является единственным тестом, выполняющимся на машине, если я запускаю тест A плюс тесты B, C и D, будет ли время, рассчитанное для теста A, снова равным 100 или нет?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]