Boost C ++库:%Processor Usage上的单元测试断言

时间:2010-09-25 03:03:11

标签: c++ linux boost real-time cpu-usage

我正在使用Boost.Unit编写单元测试,并且我正在测试的代码在单元测试的一部分期间不得超过单个CPU的50%。我怎样才能在源代码中做出这个断言?

2 个答案:

答案 0 :(得分:1)

使用时间调用 - 根据手册页:

NAME        次 - 获取处理时间

概要        #include< sys / times.h>

   clock_t times(struct tms *buf);

说明        times()将当前进程时间存储在buf指向的struct tms中。结构        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.

答案 1 :(得分:0)

如果您在Windows环境中进行编程,我会使用GetProcessTimes函数。此函数返回进程使用的内核和用户时间。在需要开始时间然后在最后测试之前,您需要调用它。

取出差异,看看它是否超过挂钟时间的50%。

时间是FILETIME格式。此格式旨在支持支持不同整数格式的程序,因此请选择正确的格式。