Performance 如何禁用铁锈中的循环展开? 我正在看ReST来重写C++代码库,我想知道如何禁用循环展开/矢量化和控制展开计数。在叮当声中,我们将使用: #pragma clang loop unroll(disable) #pragma clang loop unroll(disable) vectorize(disable) #pragma clang loop unroll_count(2)

Performance 如何禁用铁锈中的循环展开? 我正在看ReST来重写C++代码库,我想知道如何禁用循环展开/矢量化和控制展开计数。在叮当声中,我们将使用: #pragma clang loop unroll(disable) #pragma clang loop unroll(disable) vectorize(disable) #pragma clang loop unroll_count(2),performance,loops,rust,Performance,Loops,Rust,它是对性能高度敏感的代码,无法控制循环codegen可能会成为一个阻碍。您无法控制给定循环的展开方式。但在考虑这样一个RFC方面没有取得任何实际进展,更不用说接受和实施了 如果您正在寻找非常广泛的功能,可以将-C llvm args=…传递给编译器以影响llvm。如果有一种方法可以完全禁用循环展开,这可能会满足您的需要 务实地说,我鼓励您对代码进行一次测试,看看性能是否可以接受。我的个人经验表明,“通用”防锈代码的性能更高,因为 借阅检查器确保在使用参考资料而不是副本时能够安全地进行攻击 多

它是对性能高度敏感的代码,无法控制循环codegen可能会成为一个阻碍。

您无法控制给定循环的展开方式。但在考虑这样一个RFC方面没有取得任何实际进展,更不用说接受和实施了


如果您正在寻找非常广泛的功能,可以将
-C llvm args=…
传递给编译器以影响llvm。如果有一种方法可以完全禁用循环展开,这可能会满足您的需要

务实地说,我鼓励您对代码进行一次测试,看看性能是否可以接受。我的个人经验表明,“通用”防锈代码的性能更高,因为

  • 借阅检查器确保在使用参考资料而不是副本时能够安全地进行攻击
  • 多线程的相对简单的使用
  • 可帮助避免多次执行工作的强类型系统