通用工具详解(Timer / Stats)
本头文件内包含若干小工具,便于性能测量与简单统计:
Timer
- 类名:
Timer - 用途:记录起始时间,测量运行时间(秒)。
- 接口:
Timer():构造时自动记录开始时间。void reset():重置起始时间为当前时间。double elapsed_seconds() const:返回从起始时间到现在的秒数(浮点)。
示例:
using namespace STAR_CPP;
Timer t;
// 运行一些工作
work();
std::cout << "elapsed: " << t.elapsed_seconds() << "s\n";
Stats
- 结构体:
Stats - 功能:在线添加样本并维护均值与无偏方差累计。
- 接口:
void add(double x):添加一个样本。double get_mean() const:返回当前样本均值。double get_variance() const:返回样本方差(n>1 时为无偏方差,否则为 0)。
示例:
Stats s;
for (int i=0;i<1000;++i) s.add(rng.random());
std::cout << "mean=" << s.get_mean() << " var=" << s.get_variance() << '\n';
用途:
Timer+Stats常用于基准测试:用Timer记录运行时间并用Stats汇总多个试验的统计结果。