本期检索说明
先读取 content/collections/deep-radar 截至 2026-09-19 的全部原文链接,并按 URL、标题与实现机制去重。最近 24 小时内,只有 rustc 的 Polonius 约束图优化同时给出源码差异、完整 rustc-perf 指令计数和可解释的热路径机制,因此本期只收录 1 篇,不用正确性测试或无量化结果的补丁凑数。
OpenJDK 当日的 G1 IHOP 竞态与 worker offset 溢出修复有源码和压力测试,但前者只用临时 probe 确认竞态,后者明确没有可触发的回归测试,两者均缺少性能实测;Kotlin 新候选明确没有运行性能 benchmark;Zig 与 Linux 最近 7 天内没有找到同时满足实测、源码证据与原理剖析三项标准且未在历史报告出现的材料。Rust 候选虽在最近多期出现较多,但本次结果是当日新增、由官方 perf 基础设施复核的一手数据,保留比为领域配额降级标准更合适。
| 主题 | 原始发布日期 | 一手来源与交叉验证 | 截稿状态 | 推荐强度 |
|---|---|---|---|---|
| Polonius 约束图遍历去重 | 2026-09-20 00:50(中原标准时间) | rust-lang/rust PR #163027 / 单文件源码 patch / rustc-perf 对比 | 已获 reviewer 批准,因 GitHub outage 等待合并队列恢复 | 必读 |
01 · Rust:把 Polonius 热路径上的查表、分支与重复访问一起移出循环
原文与日期: Jack Huey,2026-09-20 00:50(中原标准时间);rust-lang/rust PR #163027 与 rustc-perf 指令计数对比。补丁仅修改 compiler/rustc_borrowck/src/polonius/constraints.rs,增加 80 行、删除 153 行;截稿时已由 reviewer lqd 批准,但 Rust 合并队列因 GitHub outage 暂停。
为什么值得读: 这是一份很干净的“图遍历常数项优化”样本。它没有改变 Polonius 的可达性语义,而是连续消除三类位于每个 loan、每个 node、每条 successor 边上的固定成本:整数密集键仍走哈希表、visited 先查再插、同一节点的 variance/direction 在前后向边处理中重复推导。每一项单看都小,但它们恰好乘在借用检查图的遍历规模上。
核心技术结论: 第一,RegionVid 是从 0 开始的密集索引,logical_edges 因此从 FxHashMap<RegionVid, FxIndexSet<RegionVid>> 改成 IndexVec,读取不再哈希;构建时用 ensure_contains_elem 延长向量。第二,把 successor 的 visited 判断从 contains 加 insert 两次查表,收敛为一次 insert 的布尔返回值。第三,先按当前 region 算一次 liveness_direction,再分别守卫 forward/backward 分支;原来的两个 helper 及其重复的 liveness、variance 查询被内联删除。
// 旧:两次哈希集合查询
if !visited.contains(&succ) {
stack.push(succ);
visitor.on_successor_discovered(node, succ);
}
// 新:一次插入同时回答“此前是否存在”
if visited.insert(succ) {
stack.push(succ);
visitor.on_successor_discovered(node, succ);
}这里还有一个容易漏看的正确性边界:起始节点现在必须在 push 前先放入 visited。否则把去重移动到“发现 successor”之后,图上的回边会再次把根节点压栈。对于 universal region,方向直接固定为 Forward;其他 region 则从 live_region_variances 读取,缺失 variance 时仍保守退化为 Bidirectional,没有借性能优化缩小可达集合。
最有价值的实验、源码与 benchmark 细节: 官方 rustc-perf 以 Linux instructions:u 作为主要判定指标。17 个 primary 样本全部改善,平均 -0.4%、范围 -1.0% 到 -0.2%;9 个 secondary 样本平均 -0.3%、范围 -0.5% 到 -0.2%,两组均没有指令数回退。bootstrap 从 497.193 秒降至 495.146 秒,缩短 0.41%;artifact size 从 408.84 MiB 增至 408.91 MiB,回退 0.02%。
| 指标 | 结果 | 解读 |
|---|---|---|
| Primary 指令数 | 17 个显著样本,均值 -0.4%,范围 -1.0%~-0.2% | 最可靠主结论,无回退样本 |
| Secondary 指令数 | 9 个显著样本,均值 -0.3%,范围 -0.5%~-0.2% | 方向一致 |
| Max RSS | 1 个 primary 样本 -2.7% | 样本少且该指标噪声较大,只作线索 |
| Cycles | 2 个 primary 样本平均 +33.1%,范围 +2.2%~+64.0% | 与稳定的指令数相冲突,不能宣称 wall-clock 普遍加速 |
| Bootstrap | 497.193s → 495.146s | -0.41%,但未给重复次数与误差 |
| Artifact | 408.84 → 408.91 MiB | +0.02%,保留负向指标 |
最值得迁移的不是 IndexVec 这个具体容器,而是辨认循环嵌套层级:只依赖 node 的方向判定应放在 successor 枚举之外;“是否首次发现”应由集合插入一次完成;密集 newtype index 不该默认支付哈希成本。反过来,cycles 的明显回退和 instruction count 的稳定改善并存,说明微架构噪声、调度或测量环境仍需二次验证;在看到 wall-clock 多轮结果之前,只能稳妥地说“执行的编译器指令更少”。
适合的工程师背景: 熟悉 rustc MIR/borrowck、Polonius、CFG 可达性或高频图算法,希望学习如何在不改变语义的前提下压缩查表与分支成本的编译器工程师。
预计阅读收益: 约 45–70 分钟;能完整理解密集索引数据结构、DFS 去重时机、variance 驱动的双向 liveness,以及如何同时阅读 rustc-perf 的主指标与相冲突的负向指标。
中国大陆 ToC 硬件价格观察
数据口径
窗口为 2026-08-22 至 2026-09-20,单位人民币,六类硬件继续固定同一 SKU。本次六个固定样本页均超时,搜索索引也没有返回可核验的 9 月 20 日同型号报价,因此没有复制 9 月 19 日或更早数据冒充今日行情。折线图仍按今天结束的 30 日窗口重绘;尾部空白表示证据缺失,不代表价格横盘。
| 类别 | 固定样本与最后可复核价 | 30 日窗口内真实走势 | 建议 |
|---|---|---|---|
| CPU | Ryzen 7 9800X3D,最后可复核 9/19 ¥2,619 | 9/3 ¥2,599 → 9/9 ¥2,449 → 9/14 ¥2,639 → 9/15、9/17、9/19 ¥2,619 | 观望;较窗口低点仍高 6.94%,且今日报价缺失 |
| GPU | MSI RTX 5070 VENTUS 3X 12G,最后可复核 9/13 ¥4,464.34 | 8/29–9/13 六个真实点均为 ¥4,464.34 | 继续观望;样本已延迟 7 天,下单前重核渠道价 |
| 主板 | ASUS TUF B850M-PLUS WIFI7,最后可复核 9/8 ¥1,299 | 8/31 ¥1,449 → 9/2–9/8 ¥1,299 | 刚需可把 ¥1,299 作为参考线,但不据过期样本判断仍在售低价 |
| DRAM | Kingston FURY Beast DDR5-6000 32GB,最后可复核 9/9 ¥3,900 | 9/2 ¥3,900 → 9/5 ¥3,860 → 9/6–9/9 ¥3,900 | 观望;11 天无新点,不能确认零售趋势 |
| HDD | IronWolf Pro 8TB ST8000NE001,最后可复核 9/10 ¥1,849 | 9/1–9/10 五个真实点均为 ¥1,849 | 按容量刚需购买;优先核对五年保修与数据恢复服务 |
| SSD | ZHITAI Ti600 2TB,最后可复核 9/10 页面最低 ¥749 | 9/2 ¥1,919 → 9/5–9/10 ¥749;同页渠道价差异常大 | 仅在确认 2TB 规格、颗粒、商家与保修后考虑 |
价格来源: 9800X3D、MSI RTX 5070 VENTUS 3X、ASUS TUF B850M-PLUS WIFI7、Kingston FURY DDR5-6000 32GB、IronWolf Pro 8TB、ZHITAI Ti600 2TB。
判断依据
CPU 最近三个真实点横盘在 ¥2,619,但今天无法复核,不能把“过去横盘”写成“今日仍横盘”。其余五类末点延迟 7–12 天,只作为历史参照。SSD 的 ¥749 继续视为需要复核规格和渠道的异常事件,不能外推为 2TB SSD 全市场价格。
其它你可能关心的
- OpenJDK:G1 IHOP target occupancy 改为原子快照——临时 probe 证实 resize 期间会混读,但没有可量化性能数据。
- OpenJDK:修复超大堆上 G1 worker offset 的 32 位乘法溢出——机制明确,但触发需要多 TB 堆或数百 GC 线程,作者没有回归 benchmark。
- Kotlin/Native 与 Wasm:修复 Regex COMMENTS 内联 flag 时序——145 项测试通过,PR 明确未运行性能 benchmark。
本期结论
Polonius 这次改动把三个“小常数”放回正确的层级:密集 ID 用直接索引,首次访问用一次集合插入判定,节点属性只在节点级计算一次。指令数结果跨 26 个显著样本方向一致,但 cycles 的负向数据提醒我们不能把它包装成未经验证的 wall-clock 提升。硬件侧则继续坚持缺价留白:过期报价可以构成历史曲线,不能冒充当前价格。