在Rust中,您可以编写(x * x)
为x.powi(2)
。
是否有任何理由要/反对在Rust中将其包装到功能/宏中(x * x)
(除了可读性和个人喜好以外),或者这等同于使用x.powi(2)
?
(其中2
in常量x.powi(2)
被折叠并转换为x * x
)
不,在当前的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为这两个函数生成完全相同的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句