我正在使用Boost.Unit编写单元测试,并且我正在测试的代码在单元测试的一部分期间不得超过单个CPU的50%。我怎样才能在源代码中做出这个断言?
答案 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格式。此格式旨在支持支持不同整数格式的程序,因此请选择正确的格式。