平方函数和直接调用Rust中的powi(2)之间是否存在性能差异?

时间:2016-08-06 01:26:31

标签: rust

在Rust中,您可以将(x * x)写为x.powi(2)

是否有理由/反对将(x * x) (除了可读性和个人偏好)包装到Rust中的函数/宏中,或者这相当于使用x.powi(2)

2中的常量x.powi(2)折叠并转换为x * x

2 个答案:

答案 0 :(得分:7)

不,使用当前的Rust编译器它们是等效的,产生完全相同的结果。

您可以通过Rust Playground

查看为这两种变体生成的汇编代码
#![crate_type = "lib"]

pub fn square_mul(x:f64) -> f64 {
    x*x
}

pub fn square_pow(x:f64) -> f64 {
    x.powi(2)
}

选择频道并释放编辑模式,然后按左上角的ASM按钮。这是Rust v1.10的输出:

// square_mul:
mulsd   %xmm0, %xmm0
retq

// square_pow:
mulsd   %xmm0, %xmm0
retq

因此,Rust为这两个函数生成完全相同的代码。

答案 1 :(得分:2)

如果它对你来说更好,这已经成为定义它的理由。你需要一个更好的理由,在这种情况下,我不认为有一个理由:好像没有人阅读代码会让squared感到困惑。