Repository navigation
实时速率固定宽度,延迟图表加削峰 - #4
Merged
Merged
Conversation
网速由 compact / bytes / rate 格式化,宽度随量级变化(compact 最窄 "0B" 2.2ch、 最宽 "1023M" 5.49ch),每次推送整行都会重新排版:摘要行的左边界实测在 526 与 573 之间来回,表格网速列在 845 与 854 之间。 改为把每个实时数字放进按最宽形态预留的槽位,右对齐,单位因此不动而数字向箭头 方向生长。槽宽用 ch,即等宽数字下一个数字的宽度,跟随字号,手机上 10px 同样成立。 四种量级的速度下,摘要行、总流量、网速列三处的坐标完全不变。
一个 2 秒的桶会把 24 小时的轴撑到 2200ms,其余部分压成一条平线。加 Hampel 滤波(format.ts 的 despike):偏离窗口中位数超过 3 倍稳健差的样本换成该中位数, 其余原样通过,所以持续一段时间的高延迟保持原高度,只有孤立的尖峰被拉回。 绝对中位差下限取 1 ms,即延迟存储的分辨率。不设下限时,稳定线路的窗口内多数 样本是同一个整数,中位差正好为 0,判据要么什么都不削、要么把非中位数的样本全削 掉——两种都恰好在削峰唯一要处理的形状上失效。 单探测时画出的 band 与线共享同一批离群点,且轴是按它拟合的,所以一并削:实测 24 小时窗,削峰前轴顶 2400ms,只削线不削 band 仍是 2400ms,两者都削后为 480ms。
stqfdyr
force-pushed
the
feat/stable-rates-and-despike
branch
from
September 20, 2026 03:45
344913f to
4a5b852
Compare
被替换的样本带的是偶数窗口的中位数,落在两个整毫秒之间,tooltip 会显示 180.5 ms 这种值。
三处 review 发现: 窗口此前固定 7 个样本,而桶的间隔由视口决定(请求的 points 是 innerWidth × devicePixelRatio),同一个 24 小时窗在桌面是一分钟一桶、在手机是两分钟一桶,于是 同一次五分钟的卡顿在桌面被当成尖峰削掉、在手机被当成持续保留。改为按探测自己的最小 桶间隔折算成七分钟,取奇数并夹在 3 到 15 之间。 削峰对两侧都生效,而开关的说明只写了「高延迟」。孤立的异常快同样会把自适应的轴拉开 ——实测一个这样的桶把轴从 150-480 ms 拉到 0-600 ms——所以改的是说明而不是算法。 网速列在手机版是面板宽度的 21%,320px 下只有 60px,而两个槽位加分隔符要 70px,超出 的部分被旁边的进度条盖住,常见值也会被截掉半截。该列在 @max-3xl 下不再预留;槽宽因此 改由自定义属性传递,行内样式盖不住类。
带的上下沿是各自过滤的,一个比平时快一点的桶会只触发下沿:实测 [180,181,180,180,176,180,181,180,180] 这条线得到 [180, 178],区间倒置、线还落在 区间外。改为取线与上下沿三者的跨度。 槽宽此前按 "1023 GB" 与 "1023.0 KB/s" 量,而 M 是最宽的单位字母:"1023 MB" 是 7.19ch、"1023.0 MB/s" 是 10.09ch,都超过原来的 7.2 与 9.9。改按 MB 形态取值。 despikeWindow 的返回值原本叫 window,遮蔽了全局的 window;本文件在 useHistory 里 特意用 globalThis 取全局属性,正是为了避开这个名字。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
公开页两处:实时速率固定宽度,延迟图表加削峰开关。
compact5.6ch、bytes7.3ch、rate10.2ch,按最宽的 MB 形态量),右对齐,宽度不再随量级变化。用在摘要行、表格网速列、展开详情的网速行;手机版网速列只有 60px,放不下两个槽位加分隔符的 70px,那里不预留。format.ts的despike,Hampel 滤波:偏离窗口中位数超过 3 倍稳健差的样本换成该中位数,持续一段时间的变化保持原高度。tsc -b、oxlint、npm test、npm run build通过。浏览器实测:四种量级下摘要行、总流量、网速列三处坐标完全不变;320 / 360 / 390px 下网速列不再被旁边的进度条截断;削峰在双探测与单探测(带 band)下把轴从 2400 ms 收到 480 ms。同一滤波在默认主题的失效见 monitor-probe/monitor-theme-default#3。