崮生(子虚) f053112e44 perf(gsub-reachable): type1 fmt1 + type3 条件反转遍历方向
延续 9d6e982(type1 fmt2 反转)的思路,对 SingleSubst format1 与
AlternateSubst(type3)同样反转遍历方向:遍历 reachable 二分查 covGids
(按 gid 升序)得 index,替代遍历 covGids 逐个查 reachable。

初夏明朝纯标点实测 fmt1 covLen 405、type3 covLen 987(命中率 2.3%),
均属「展开全量命中极少」模式,反转后遍历量从 covGids.length 降到
reachable.size。

关键:加条件 covGids.length > reachable.size 才反转。无条件反转在
霞鹜/FiraCode 上负优化(covGids 短,FiraCode type1 avg 5.5,二分开销
> Set.has 遍历)。条件反转使短 covGids 走原 Set.has 路径。

type4(Ligature)不反转:firstHit 判定反转后遍历 reachable(53)× 18
calls = 954 次二分 > 原 684 次 Set.has,必负。

A/B vs 9d6e982(3000 次 p50,reachable sha 全一致):
- 初夏标点 102→92μs(-10%)
- 初夏8字 54→51μs(-5%)
- 霞鹜标点 12→10μs(-12%,无条件版 +8% 已修正)
- 霞鹜8字 6.8→6.4μs(-7%)
- FiraCode 标点 70→69μs(-1%,无条件版 +2% 已修正)

相比最初 baseline(fee9e49 前)初夏标点 129→92μs(-29%)。基准测试
SSIM 全不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 17:07:13 +08:00
..