作者在优化一个领域专用压缩器时,发现一个看似无用的 if 语句——在条件几乎总是成立的情况下再加一层检查——竟然让代码性能提升了四倍。核心原理是:原循环 j = next_j[i][j] 形成了一条依赖链,每次迭代必须等上一次内存读取完成,循环受限于内存访问延迟。加入一个 CPU 预测为"不成立"的 if (j != next_j[i][j]) 分支后,CPU 投机执行跳过赋值,打破依赖链,循环从延迟受限变为吞吐量受限。但编译器会优化掉这个"无用"分支,需要用 volatile 强制保留。合成基准测试从 320μs 降至 80μs(4 倍),真实场景约 2 倍提升。文章还讨论了用 pshufb 向量化来并行计算多路径的替代方案。
j = next_j[i][j] 每次迭代依赖上一次结果,CPU 无法并行执行,循环受限于内存访问延迟而非吞吐量if (j != next_j[i][j]),CPU 预测分支不成立时自动跳过赋值,消除跨迭代依赖,投机执行生效*(uint8_t volatile *)&next_j[i][j] 强制保留;[[unlikely]] 注解在 LLVM 上也有同样效果