Lobsters | 原文链接 | 2026-09-07 收录

用 Go SIMD 重写 TurboPFor:Debian Code Search 删掉了最后一处 cgo

来源: michael.stapelberg.ch — 2026-09-06

概述

Michael Stapelberg 实现了多年夙愿:删掉 Debian Code Search(DCS)里最后一处 cgo 依赖。这得益于 Go 1.26 新引入的实验性 simd/archsimd 包——他用它把 TurboPFor 整数压缩的解码器(bitunpack256v32)从 C 库移植为原生 Go SIMD 实现,并借 AVX-512 指令集做到比 C 参考实现更快。DCS 用 TurboPFor 把位置索引压缩后放进一台中配 Hetzner 服务器,因此解码速度直接决定字面查询(约占全部查询 78.2%)的延迟。

核心要点

金句

I deleted the last cgo dependency in Debian Code Search! ... we can implement the TurboPFor integer compression format as efficiently — more efficiently, in fact, by using the newer AVX512 instruction set! — as the reference implementation.
返回 Lobsters 首页