DEEP SIGNAL / SOURCE / PROOF
深潜雷达
每日筛选有实测、源码、原理与工程价值的 JVM、Kotlin、Rust、Zig 和 Linux 深度技术文章。DAILY BRIEFINGS
每日精选
增量依赖图去重存储与 Sized 快路径
rustc 让增量依赖图反向索引只保存节点编号,官方样本峰值 RSS 平均下降 3.9%;新 trait solver 跳过显然 Sized 类型的深度求解,但 bootstrap 回退 1.26%。
RCU 延迟释放页缓存与 SVE 窄化存储
Linux 以 RCU 延迟释放消除页缓存小读的共享 refcount 争用,64 线程样本吞吐提升 22.9 倍;HotSpot 让 AArch64 SVE 在 store 时直接窄化,int→byte JMH 延迟下降 16.2%。
MGLRU memcg 轮转、ParkEvent 对齐与 trait solver 快路径
Linux 将 MGLRU memcg 分桶插入降为 O(1),完整补丁使压力请求吞吐提升 12.7 倍;HotSpot 移除过时的 256 字节 ParkEvent 对齐,万线程样本同步内存下降 59.3%;rustc 新 trait solver 用 identity response 快路径收回 8.5% 指令。
AArch64 浮点归约消冗余与 rustc Trait Impl 分桶
OpenJDK 让 NEON 浮点归约直接匹配零恒等元,依赖链延迟下降 18%–36%;rustc 按 self type 首个泛型参数再分桶,33 个 primary 样本指令数平均下降 11.1%,同时保留 bootstrap 与 RSS 回退。
Tokio 缓存行隔离与 rustc 增量依赖图索引复用
Tokio 用 CachePadded 隔离共享注入队列和 idle 状态,144 worker 单生产者提交耗时下降 33.1%;rustc 让绿色依赖节点沿用前一会话索引,139 个 primary 样本指令数平均下降 2.7%,同时保留 bootstrap 与 RSS 回退。
Rust Span 寄存器快路径与 unwrap 异常清理外移
rustc 为最常见的 inline Span 合并建立无栈帧快路径,138 个 primary 样本指令数平均下降 0.5%;标准库把 Result::unwrap 的错误值按值移交给冷路径,消除调用方 landing pad,但官方数据同时暴露少数样本与 RSS 回退。
Kotlin/Native 批量缓存与 rustc MIR 向量瘦身
Kotlin/Native 将多子项目 clean build 的缓存编译合并为单次 IR Linker 运行,把作者报告的增量编译额外开销压到约 10%;rustc 在 MIR 缓存前收紧 basic-block statement Vec,aws-sdk-ec2 峰值 RSS 减少约 80 MiB(1.45%),代价是指令数增加 0.3%。
Curve448 56 位 limb 与 rustc trait solver 热路径
OpenJDK 将 Curve448 从 16×28-bit 重构为 8×56-bit limb,AArch64 上密钥生成、协商与 Ed448 签验提升 45%–47%;rustc 以相等值早退、循环不变量外提与类型预驻留,将 Diesel 新求解器定向指令数从 56.4B 降至 49.5B,同时保留全局回退证据。
Kotlin/Native Machine Outliner 与 rustc ThinVec 容量控制
Kotlin/Native 为显式 smallBinary 的 AArch64 构建开启 Machine Outliner,真实应用 framework 文本段缩小 44.0%,但 codegen 增加 52.5%、卡顿增加 50%;rustc 修复 ThinVec collect 忽略 size_hint 的容量膨胀,大型 crate 的最大 RSS 减少 30.69 MiB。
Kotlin Linker 标签快读与 rustc 查询缓存瘦身
Kotlin linker 只读取 protobuf 首个 tag,真实项目热点从 7.5 秒降至 400 毫秒;rustc 在普通非增量构建中停写未被消费的查询缓存索引,aws-sdk-ec2 最大 RSS 减少 62.6 MiB,并用 DHAT 与 Max-RSS 交叉解释收益边界。
Float16 向量重排与 Rust Iterator 内联边界
HotSpot 将 Float16Vector.rearrange 从 Java fallback 接入 16-bit permute IR,1024 元素吞吐提升约 100.5 倍;Rust 为 Chain/Map 的 fold 路径补齐内联边界,rustc-perf 主样本指令数平均下降 1.5%,同时保留回退与 RSS 代价。
GFNI 字节向量移位与 rustc Span 内联边界
HotSpot 用 GFNI 仿射矩阵替代字节 widen/shift/pack,九组 JMH 吞吐提升 14.1%–73.6%;rustc 扩大 Span 内联 context 上限,uom 指令数下降 1–2%,但全局基准仍有噪声与回退。
Rust UTF-8 反向分块跳过与 Kotlin Sequence 单层过滤
Rust 为 Chars 反向跳过加入 32 字节分块计数,1000 字符场景约提升 5.9–10.0 倍;Kotlin 合并 filterIndexed 的三层包装,堆分配下降 49.5%、延迟缩短约 38.7%。
Tokio 分片队列公平性与 Kotlin/Wasm ULP 位级快路径
Tokio 用每分片八任务预算把过载队列 p99 最多压低约 85.9%,单生产者吞吐代价收敛到 1.3%;Kotlin/Wasm 以 IEEE 754 位模式重写 Double.ulp,Wasm 最多提升 3.78 倍。
Thread-SMR 批量回收与 rustc 单态化泛化快路径
HotSpot 将 ThreadsList hazard-pointer 扫描摊销到 16 次退休或 4 MiB,线程启动最高快约 63%;rustc 用 TypeFlags 跳过单态化阶段的无效泛化,定向用例从 47 秒降至 7.8 秒。
Vector 边界零装箱与 BTreeMap 同节点迭代快路径
C2 让热 Vector 签名方法越过字节码尺寸门槛,把 192 B/call 降为零;Rust BTreeMap 绕过同一叶节点内的通用导航,迭代 microbenchmark 最多缩短 73.8%。
CLDR 缺失项负缓存与 rustc 宏路径零堆分配
Java 时区名称把重复缺失查找变成负缓存,New York 样本耗时下降 52.74%;rustc 重塑 builtin macro 路径构造 API,次级样本指令数平均改善 0.2%。
Shenandoah HdrSeq 延迟分配与空序列边界
Shenandoah 将 HdrSeq 的 56 槽 magnitude 数组延迟到首次写入,GC 原生内存峰值从 131,712 降至 35,840 字节,并补齐空序列查询语义。
rustc LTO 后端与浮点解析缓存收敛
rustc 把 LTO 配置扩展到 Cranelift/GCC backend,主样本指令数平均下降 0.6%;浮点解析测试按类型裁剪幂表,峰值内存从 2.1 GiB 降至 16 MiB。
Kotlin/Native LLVM 生命周期与 RISC-V AOT 兼容性
Kotlin/Native 在外部 clang/link 前释放 LLVM generation state,使完整进程树峰值 RSS 下降 17.9%;HotSpot 把 RISC-V SATP 模式纳入 AOT cache 指纹,阻止 Sv57 缓存被 Sv48 机器错误复用。
Tokio 分隔符扫描与 Kotlin/Wasm 运行时裁剪
Tokio 以 memchr 与字节查表把 8 MiB 分隔符扫描吞吐提升到 1.90–2.25 倍;Kotlin/Wasm 消除运行时 checked cast 后,DCE 产物缩小约 13%–16%。
C2 循环检查消除与 rustc 性能噪声辨别
HotSpot C2 通过提升循环检查与主循环边界的关系,把 ArrayList foreach 的主代码缩小最多 28.6%;rustc 两轮 deferred liveness 实验则展示了如何区分指令数、cycles 与 wall-clock 噪声。
RISC-V Zicond 默认启用与 Polonius 小集合内联
HotSpot 修正产品构建中的 Zicond 探测边界,让不可预测条件选择真正落到 czero;rustc Polonius 则用内联 SmallVec 取代小型哈希集合,降低约束图构建成本。
AOT 元数据遍历的按需分配与空约束快路径
HotSpot 将 MetaspaceClosure 的 Ref 从逐节点堆分配改为栈上暂存、仅递归溢出时克隆;CDS 链接约束则用一行控制流修正跳过无意义的 vtable/itable 重建。
RVV 双锚点字符串搜索与 Rust 协程冲突矩阵剪枝
OpenJDK 用 RVV 首尾字符双锚点把 RISC-V 大字符串搜索最高提速 71.49 倍;rustc 复用 coroutine live set,跳过已经覆盖的冲突矩阵更新。
RISC-V SHA-3 寄存器常驻与 Parallel Full GC 交错分片
OpenJDK 用固定 GPR 映射把 Keccak-f 动态指令压低约一半、内存指令减少约 92%,并以交错 region 分片缓解 Parallel Full GC 的活对象聚集失衡。
Polonius 约束图遍历的三层去重
rustc 将 Polonius 逻辑边索引从哈希表换为 IndexVec,把 visited 查询折叠为一次插入,并把方向判定移出边遍历;17 个主样本指令数平均下降 0.4%,无指令回退。
C2 FP16 单指令广播与 VecDeque 克隆复用
HotSpot C2 用单条 vpbroadcastw 替代 FP16 广播前的 XMM→GPR 搬运,JMH 吞吐提升约 2.36%;Rust VecDeque 恢复元素级 clone_from 复用并为平凡复制类型走切片直拷,字符串场景最高缩短 78.9%。
Rust 大整数 limb 加宽与 Kotlin/JS 64 位整数重构
Rust core 在 64 位平台把 40 个 u32 limb 改为 20 个 u64 limb,浮点十进制转换最高提速 1.63 倍;Kotlin/JS 合入经论文与自身 benchmark 验证的 Scala.js 64 位整数算法,并显著缩小最小产物。
RISC-V CRC32 折叠与 Shenandoah 直方图压缩
OpenJDK 为无 RVV 的 RISC-V Zbc 处理器加入标量 CRC32 折叠,大块吞吐稳定在约 6.2GB/s;Shenandoah 将 HdrSeq 从十进制大直方图改为二进制窄桶,样本内存下降 59.7%。
Exchanger 自旋修复与 Tokio 分片注入队列
OpenJDK 以 24576 次有限自旋修复 macOS 上 Exchanger 约 27 倍回退;Tokio 将外部任务注入队列分片,在 64 核并发提交下最高提速 5.71 倍。
HotSpot 堆转储瘦身与 Kotlin 增量快照加速
HotSpot 在 live heap dump 中跳过不可达填充对象,将样本转储从 2.6GB 降至 1.5GB;Kotlin 增量编译复用解析结果并改用 FarmHash,classpath snapshot 最多提速 41%。
Kotlin Native 静态链接与 rustc 宏卫生热路径
Kotlin/Native 因错误保留 PT_INTERP 让静态产物启动即崩溃;rustc 则把宏展开中最常见的单一 SyntaxContext 映射内联,减少哈希表热路径成本。
Rust CGU 分片陷阱与 Tokio 协作预算
rustc 的泛型 CGU 分片在单一 Polars 样本上改善增量构建,却在官方全套 perf 中触发大面积回退;Tokio 则用协作预算修复始终就绪的 copy_buf 永不让出执行权。
Tokio I/O 分片与 Linux 构建关键路径
Tokio 用多 epoll 分片拆散 fdinfo、注册与就绪队列争用;Linux kbuild 的 23 个补丁则并行化 modpost、objtool 与 Rust 前端,把 allmodconfig 增量构建最多缩短 70%。
Tokio 就绪态捷径与 HotSpot BSD 移植边界
Tokio 通过预置 accepted socket 的就绪位消除一次 driver turn,在过载场景显著压低新连接尾延迟;OpenJDK 用 22 个提交勾勒四种 BSD 的 HotSpot、原生库与 SA 适配边界,rustc 则把 SyntaxContext 稳定哈希中的两次 hygiene 访问合并为一次。
RVV 无符号归约与 Rustc 热路径缓存
RISC-V C2 用 vredminu/vredmaxu 取代 Vector API 的 Java fallback,吞吐提升 33–44 倍;rustc 则缓存 borrowck 数据流 seek 结果,并修掉空约束构造中的隐性 IndexSet 分配。
Confined Arena 定槽回收与 Borrowck 稠密位集
OpenJDK 让 confined arena 记住池槽,将平台线程分配降至 0.817 ns/op;rustc 则依据“只插点、不插区间”的真实操作,把 liveness 追踪改为 DenseBitSet,主样本指令数平均改善 1.4%。
Polonius 稠密索引与跨架构向量 intrinsic 的性能边界
Rust Polonius 用 IndexVec 消除树查找,平均减少 0.9% 编译指令;HotSpot 分别以 AVX2 与 RVV 补齐字符串压缩和位压缩向量路径,并完整暴露短输入回退与后端实现成本。
rustc 热路径缓存与闭包别名语义的性能边界
两组 rustc 实验:缓存 Session 的 sanitizer 集合,逆转一次平均 1.3% 的指令回归;再用消融实验定位闭包 MaybeDangling 语义取消 LLVM noalias 后的真实成本。
Tokio 单态化爆炸与 I/O 过载的双重治理
两项 Tokio 运行时实验:把自动装箱决策前移到单态化阶段,使任务 harness 实例数下降 74.2%;再把忙碌轮询与阻塞 park 的 I/O 批量拆开,消除生产 HTTP/2 服务的本地队列洪峰。
SVE 反向移位与 rustc 查询 Arena 的真实代价
两篇一手性能材料:C2 如何用 AArch64 SVE 反向移位消除向量旋转中的寄存器复制,以及 rustc 把查询结果迁入统一 arena 后为何同时出现 RSS 改善、指令回退与测量噪声。
增量缓存回收与 VerifyOops 重定位去膨胀
两篇一手性能材料:rustc 如何只保留最新增量编译会话并让 Ruff/uv 缓存显著缩小,以及 HotSpot 在 AArch64、RISC-V 上避免 VerifyOops 调试字符串污染全局外部地址表。
Arc 冷路径外提与 next-solver 自失效消除
两篇 Rust 一手性能材料:缩短 Arc::drop 热路径并保留 RISC-V 汇编证据,以及 next-solver 如何避免 opaque goal 被自身写入反复唤醒;硬件部分改为可累计的中国大陆真实报价数据。
Shenandoah 巨型对象退化回收与 AVX-512 掩码合并
两篇来自 OpenJDK 的一手性能提案:Generational Shenandoah 如何避免巨型对象分配失败后立即 Full GC,以及 C2 如何把 AVX-512 掩码相等比较压缩为一条 KXNOR;附中国大陆六类 PC 硬件价格观察。
DropGuard 内联代价与 Rust 构建机性价比
两篇来自 Rust 项目的一手性能资料:一个通用 DropGuard 如何因丢失调用点内联提示引发编译回归,以及 Rust CI 如何用真实构建时间与按次成本在 Graviton、Zen 5 实例间选择;附中国大陆六类 PC 硬件价格观察。
Trait Solver 查询驻留与 OpenJDK 增量构建失效
两篇来自 Rust 编译器与 OpenJDK 构建系统的一手性能资料:CanonicalQueryInput 驻留如何把 Bevy 编译峰值内存约从 15 GiB 降至 4 GiB,以及交叉编译状态串扰为何会让零改动增量构建重编 3,396 个文件;附中国大陆六类 PC 硬件价格观察。
Steal Governor 动态 vCPU 收缩与 Rust 位集布局
两篇跨 Linux 调度器与 Rust 编译器的数据驱动资料:steal governor 如何让过量配置的虚拟机主动收缩 vCPU 足迹,以及固定长度 DenseBitSet 为什么应从 Vec 改用 Box slice;附中国大陆六类 PC 硬件价格观察。
KIO 零拷贝传输与 Rust 块设备安全抽象
两篇 Linux I/O 深度资料:KIO 如何用同机交错基准、cycles profile 与 heaptrack 找到批量扩容和跨进程传输成本,以及 rnull 如何用安全 Rust 覆盖 Linux 块层功能并量化 C/Rust 性能差异;附中国大陆六类 PC 硬件价格观察。
Polonius 活跃借用布局与 Shenandoah 队列预平衡
三篇近一天一手深度资料:Polonius 活跃借用矩阵的扁平化、Miri 精确测试从全量克隆转向对数查找,以及 Generational Shenandoah 如何用毫秒级预平衡换回百毫秒并发标记时间;附中国大陆六类 PC 硬件价格观察。
C2 循环携带变量与 Generational Shenandoah 标记热路径
两篇近七日 OpenJDK 一手深度资料:C2 消除循环中滞后一拍的冗余寄存器值,以及 Generational Shenandoah 如何把对象标记热路径缩短 10%–12%;附中国大陆六类 PC 硬件价格观察。
C2 宏展开内存与 RISC-V 向量掩码指令选择
两篇近七日一手 OpenJDK 深度资料:C2 宏节点展开如何制造百万级临时节点,以及 RISC-V VectorMask 如何从多指令序列收敛为单条 RVV 指令;附中国大陆六类 PC 硬件价格观察。
G1 卡表、Zen spill 与 Rust trait solver
三篇近七日一手技术资料:G1 remembered set 缓存重构、Zen3+ 的 C2 溢出策略实测,以及 Rust 新一代 trait solver 的生态级性能收敛;附中国大陆六类 PC 硬件价格观察。