串流延遲百分位

stats.percentile 精確,但需要把整份已排序的樣本清單放在記憶體中;對長時間執行或分片的 load / soak 測試,你會想要一個每筆 O(1)、記憶體有界、且**可合併**的結構。本功能補上 HdrHistogram 風格的 LatencyDigest`(以有效位數分桶記錄、可跨分片合併),外加供小樣本集使用的 :func:`exact_percentiles

純標準函式庫(math);不匯入 PySide6

無頭 API

from je_auto_control import LatencyDigest, exact_percentiles

digest = LatencyDigest(sig_figs=3)
for latency_ms in stream:
    digest.record(latency_ms)        # O(1)、記憶體有界
print(digest.summary())              # min/mean/max/p50/p90/p95/p99

# 把各分片的 digest 合併成一個
total = shard_a.merge(shard_b)

# 小樣本集的精確百分位
exact_percentiles([12.0, 9.5, 14.2], qs=(50, 95))

LatencyDigest.record 把每個值四捨五入到 sig_figs 有效位數分桶(因此記憶體由相異捨入值的 數量決定,而非樣本數);``percentile`` / quantiles / summary 讀回,而 merge 把另一個 digest 折入以做跨分片彙整 —— 這正是從各 worker 結果計算正確彙整 p99 所需的特性。 exact_percentiles 在小樣本集情況下委派給 stats.percentile

執行器命令

AC_percentiles 接受 samples``(清單或 JSON 字串)與選用的 ``qs 分位(預設 50/90/95/99), 回傳 {percentiles}。同一操作亦以 MCP 工具 ac_percentiles 以及 Script Builder 中 Report 分類下的命令提供。