你能声明一个变量保存在 Rust 的 CPU 寄存器中吗?
Can you declare a variable to be saved in a CPU register in Rust?
在 C 中,您可以建议编译器将变量保存在这样的寄存器中:
int main() {
register int varname = 1;
// ...
}
Rust 中有等效项吗?或者如果一个整数被频繁使用,编译器是否可以相信自己会这样做?
不,Rust 没有等价物
没有办法提示编译器为特定变量使用寄存器,就像目前 C++ 中没有的那样。
注册只是一个提示,在C中只有1个一定的作用
在C中,register
只是对编译器的一个提示;编译器仍然决定将哪些变量放入寄存器中。
然而,它的作用是阻止您获取变量的地址。更重要的性能影响是,这意味着编译器可以执行一些原本不可用的优化,即使它实际上没有将值放入寄存器。
Rust 已经为您提供了
Rust 的所有权模型允许您拥有一个永远不会别名的值,编译器可以自由地对其进行更大程度的优化——没有像 C 那样的指针赋值(不使用 unsafe)。编译器还可以自由使用它必须通知其寄存器使用的所有权和生命周期信息。
在 C 中,您可以建议编译器将变量保存在这样的寄存器中:
int main() {
register int varname = 1;
// ...
}
Rust 中有等效项吗?或者如果一个整数被频繁使用,编译器是否可以相信自己会这样做?
不,Rust 没有等价物
没有办法提示编译器为特定变量使用寄存器,就像目前 C++ 中没有的那样。
注册只是一个提示,在C中只有1个一定的作用
在C中,register
只是对编译器的一个提示;编译器仍然决定将哪些变量放入寄存器中。
然而,它的作用是阻止您获取变量的地址。更重要的性能影响是,这意味着编译器可以执行一些原本不可用的优化,即使它实际上没有将值放入寄存器。
Rust 已经为您提供了
Rust 的所有权模型允许您拥有一个永远不会别名的值,编译器可以自由地对其进行更大程度的优化——没有像 C 那样的指针赋值(不使用 unsafe)。编译器还可以自由使用它必须通知其寄存器使用的所有权和生命周期信息。