【发布时间】:2015-05-08 20:09:51
【问题描述】:
在 C++ 中,表达式模板是一种技术,它依赖于编译器对 C++ 代码中表达式的了解来简化和优化它们,使其超出程序程序的可能范围。这是一种强大的技术,例如Eigen 和 Armadillo 矩阵库可加快矩阵上的某些复合运算。一个incomplete wiki page on the Eigen web page 几乎要开始解释了。
我想知道 Rust 中是否存在类似的技术,即有没有办法让 Rust 编译器在编译时优化某些表达式,以便创建最少数量的临时对象。
【问题讨论】:
-
afaik rustc 不做任何优化,除了常量求值(只依赖于常量的折叠表达式)。所有的优化都在 llvm 中完成。
-
@ker 是的,但这主要是一个实现细节,与运行时性能无关,因为 LLVM 非常擅长优化。
-
@ker 是的,但是由于模板的实例化方式,编译器/优化器实际上有足够的信息来轻松优化这些东西,所以我猜语言或 rustc 本身需要有某种方式做这种操作。