Study note

Branchless Rust: Making a Filter 4x Faster by Removing an if

Properties

Type
Blogs
Status
待读
Domain
Rust
Category
性能、内存与底层机制
Source
greyblake.com
Vault note
library/articles/rust/Branchless-Rust-Making-a-Filter-4x-Faster-by-Removing-an-if-02288e5746ab56dd.md

Summary

以过滤 `f64` slice 的热循环为例,用 Criterion 比较 iterator、预分配和 branchless 实现,并通过不同 selectivity 与有序/随机输入说明 branch predictor 的表现;branchless 版本把条件转成 0/1 算术和无分支写入,再检查生成汇编验证优化来源。

Highlights

最有价值的结论不是“删除所有 `if`”,而是区分廉价的可预测分支和昂贵的 misprediction。文章同时展示 branchless 会牺牲最佳情况、增加写入并降低可读性,强调只有 profiler 指向不可预测热分支时才值得采用。

Notes

用 Rust benchmark 和汇编理解不可预测分支的代价。

Comments

Loading comments...