Boost C ++ библиотеки: утверждение модульного теста на% использования процессора - PullRequest
0 голосов
/ 25 сентября 2010

Я пишу модульный тест с Boost.Unit, и код, который я тестирую, не должен превышать 50% одного процессора в течение части модульного теста. Как я могу сделать это утверждение из исходного кода?

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

Используйте вызов времени - в соответствии со страницей руководства:

NAME времена - получить время процесса

СИНТАКСИС #include

   clock_t times(struct tms *buf);

ОПИСАНИЕ times () хранит текущее время процесса в структуре, на которую указывает buf. Структура TMS определен в:

       struct tms {
           clock_t tms_utime;  /* user time */
           clock_t tms_stime;  /* system time */
           clock_t tms_cutime; /* user time of children */
           clock_t tms_cstime; /* system time of children */
       };

   The tms_utime field contains the CPU  time  spent  executing  instructions  of  the  calling
   process.   The  tms_stime  field  contains  the CPU time spent in the system while executing
   tasks on behalf of the calling process.  The  tms_cutime  field  contains  the  sum  of  the
   tms_utime  and  tms_cutime  values  for  all waited-for terminated children.  The tms_cstime
   field contains the sum of the tms_stime and tms_cstime values for all waited-for  terminated
   children.
0 голосов
/ 25 сентября 2010

Я бы использовал GetProcessTimes Функция, если вы программируете в среде Windows.Эта функция возвращает ядро ​​и пользовательское время, использованное процессом.Вам нужно будет позвонить до начала времени, а затем в конце теста.

Возьмите разницу и посмотрите, превышает ли она 50% времени настенных часов.

Время указано в формате FILETIME.Этот формат предназначен для поддержки программ, поддерживающих разные целочисленные форматы, поэтому выберите правильный формат.

...