#branch #optimization #likely #unlikely

no-std 分支

为稳定 Rust 提供分支提示预测和控制函数,包括 likely、unlikely、assume 和 abort,以帮助算法优化

4 个版本

0.1.3 2023 年 5 月 17 日
0.1.2 2023 年 3 月 25 日
0.1.1 2023 年 3 月 9 日
0.1.0 2023 年 3 月 4 日

133无标准库

Download history 96/week @ 2024-03-13 343/week @ 2024-03-20 332/week @ 2024-03-27 886/week @ 2024-04-03 348/week @ 2024-04-10 368/week @ 2024-04-17 275/week @ 2024-04-24 259/week @ 2024-05-01 245/week @ 2024-05-08 372/week @ 2024-05-15 281/week @ 2024-05-22 279/week @ 2024-05-29 277/week @ 2024-06-05 295/week @ 2024-06-12 251/week @ 2024-06-19 187/week @ 2024-06-26

每月 1,036 次下载
用于 19 个 Crates(直接使用 3 个)

MIT 许可证

7KB

分支

Crates.io Documentation MIT licensed

branches 提供了分支提示预测和控制函数,用于算法优化,在稳定版 Rust 中使用内置功能,在 nightly 版中使用 core::intrinsics

使用方法

要使用 branches,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
branches = "0.1"

函数

branches 提供以下函数

  • likely(b: bool) -> bool:返回输入值,但向编译器提供提示,表示该语句很可能为真。
  • unlikely(b: bool) -> bool:返回输入值,但向编译器提供提示,表示该语句不太可能为真。
  • assume(b: bool):假设输入条件始终为真,如果不为真则导致未定义行为。在稳定 Rust 中,此函数使用 core::hint::unreachable_unchecked() 来实现相同的效果。
  • abort():立即终止进程的执行,而不进行任何清理。

以下是一个使用 likely 来优化函数的示例

use branches::likely;

pub fn factorial(n: usize) -> usize {
    if likely(n > 1) {
        n * factorial(n - 1)
    } else {
        1
    }
}

通过正确使用 branches 提供的函数,您可以实现算法性能的 10-20% 的提升。

许可证

branches 使用 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。

无运行时依赖