blob: 3edb4a70c1da7beba297fe6905f539cec4092153 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
namespace LivingVillage.Desktop
/// P21:纯函数的帧率采样汇总(均值/最低/最高),供实机性能核对与回归测试。
/// 不含时钟/IO,只看传入的每秒 FPS 样本序列;warmup 采样用于剔除启动抖动。
module PerformanceSummary =
type Summary =
{ Count: int
Mean: float
Min: float
Max: float }
/// 丢弃前 `warmupSamples` 个样本(不足则全丢),对剩余样本求均值/最低/最高。
/// 剩余为空时返回 None(如运行过短)。
let summarize (warmupSamples: int) (samples: float list) : Summary option =
let skip = max 0 warmupSamples
let taken =
if List.length samples <= skip then []
else samples |> List.skip skip
match taken with
| [] -> None
| _ ->
Some
{ Count = taken.Length
Mean = List.average taken
Min = List.min taken
Max = List.max taken }
|