# Benchmark data

本目录记录可复现的验收基准。基准数据不是随机下载的样本，而是由 `benchmark_data` 生成的确定性污染序列：基础信号在 `100..104` 附近周期变化，每 97 个样本注入一次 `+250` 尖峰，每 131 个样本注入一次 `-180` 尖峰。这样可以同时验证中心估计、异常计数、协方差和流式接口在污染数据上的行为。

## 运行方式

```bash
moon run cmd/benchmark
```

输出中的 `checksum` 是所有主要统计量的确定性汇总，可用于回归检查。改变算法后，应先确认结果变化是预期的，再更新本文件中的测量记录。

## 本机实测记录

测量环境：Windows 11 x64，MoonBit `moon 0.1.20260807`、`moonc 0.10.7+bc794d341`，2026-08-17。命令行入口连续运行三次（使用已构建缓存）耗时分别为 **270.32 ms、247.20 ms、272.54 ms**，平均 **263.35 ms**。该数字包含 CLI 启动和 benchmark 入口执行，不宣称为纯函数微基准。

| 样本数 | Mean | Median | MAD | Trimmed mean | Huber location | IQR outliers | Stream mean | Checksum |
| ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 100 | 106.9625 | 102 | 1.4826 | 102.009375 | 102.01362872038061 | 2 | 329.16515322812864 | 848.6173983626506 |
| 1,000 | 103.48475 | 102 | 1.4826 | 102.0021875 | 102.0025745464782 | 18 | 317.87296707541776 | 849.7011209136876 |
| 5,000 | 103.23125 | 102 | 1.4826 | 102.0055 | 102.00585781593765 | 90 | 309.9915981921863 | 914.2782424154054 |

这些结果体现了本项目的目标：均值受到尖峰影响，而中位数、截尾均值和 Huber 估计仍保持在基础信号附近；IQR 计数随样本规模增长；确定性 checksum 保证 CI 可以发现无意的数值回归。

## 解释边界

`StreamingRobustStats` 是面向 O(1) 内存在线处理的裁剪均值/方差状态机，它的初始状态会受到首个样本影响，故 `stream_mean` 不应直接与批量中位数比较。需要严格批量等价时，请使用 `StreamingMoments`；需要抗污染的在线趋势时，请使用 `WindowedAnomalyDetector` 或 `AdaptiveClipper`。
