cpu_timer类和auto_cpu_timer类用于精确计时,有elapsed
、start
、is_stopped
等方法。在elapsed
方法中,返回的不再是一个数字,而是一个struct cpu_times
,这个结构体中,定义为:
struct cpu_times
{
nanosecond_type wall;
nanosecond_type user;
nanosecond_type system;
void clear() {wall = user = system = 0LL; }
};
按boost
官方文档的说法,wall
指的是程序运行的真实时间,user
指的是用户CPU时间,system
指系统CPU时间。其中,真实时间易受其它程序运行干扰,是不稳定的。如果是衡量算法运行时间,更好的度量是user
和system
之和。从变量类型可以看出,所以的时间单位均为纳秒(ns)。
默认的输出格式为:
5.713010s wall, 5.709637s user + 0.000000s system = 5.709637s CPU (99.9%)
文档解释