尽管学习曲线陡峭,Rust已经证明了自己是一门值得掌握的语言。今天,让我们深入研究一下Rust优于C++语言的原因。
原因1:积极的编译器优化
- Rust的编译器(LLVM)比C++编译器更积极地优化代码,这是因为所有权规则,LLVM可以做出假设。
- LLVM在内联函数方面更加积极,特别是对于小函数。内联避免了函数调用开销并使其快速。
例如,下面的函数可能会或可能不会被C++编译器内联,但LLVM肯定会内联它。
fn f(n: i32, dp: &mut Vec) -> i32 {
let n1 = n as usize;
if dp[n1] != -1 {
return dp[n1];
}
dp[n1] = Self::f(n-1, dp) + Self::f(n-2, dp) + Self::f(n-3, dp);
dp[n1]
}
原因2:较低的运行时开销
1,C++栈展开导致运行缓慢
什么是栈展开?
每当抛出异常时,在栈上开始分配资源和调用对象的析构函数的过程,这称为栈展开。
class Resource {
public:
Resource() {
std::cout