11 边界检查

减少边界检查开销

译文 · 基于 The Rust Performance Book

边界检查

原文链接: https://nnethercote.github.io/perf-book/bounds-checks.html

默认情况下,Rust 中对切片、向量等容器类型的访问会进行边界检查。这可能影响性能,例如在热点循环中,不过往往没有想象中那么频繁。

有几种安全方式可以改写代码,让编译器了解容器长度并优化掉边界检查。

  • 在循环中用迭代替代直接元素访问。
  • 不要在循环内对 Vec 做索引,而是在循环前把 Vec 转成切片,再在循环内对切片索引。
  • 为索引变量的范围添加断言。 示例 1, 示例 2。

要让这些技巧生效可能比较棘手。Bounds Check Cookbook 对此有更详细的说明。

作为最后手段,还有不安全的 get_unchecked 和 get_unchecked_mut 方法。

最后修改 August 23, 2026: 更新 (499855b16)