gpt4 book ai didi

performance - 如何禁用 Rust 中的循环展开?

转载 作者:行者123 更新时间:2023-11-29 07:44:46 27 4
gpt4 key购买 nike

我正在研究 Rust 以重写 C++ 代码库,我想知道如何禁用循环展开/矢量化并控制展开计数。在 Clang 中我们会使用:

#pragma clang loop unroll(disable)
#pragma clang loop unroll(disable) vectorize(disable)
#pragma clang loop unroll_count(2)

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

最佳答案

您无法控制给定循环的展开方式/不展开方式。它has been proposed ,但在考虑这样的 RFC 方面没有取得真正的进展,更不用说接受和实现它了。


如果您正在寻找非常广泛的功能,您可以将 -C llvm-args=... 传递给编译器以影响 LLVM。如果有一种方法可以完全禁用循环展开,那可能会做你想做的事。

从实用的角度来说,我鼓励您获得 walking skeleton在 Rust 中检查你的代码,看看性能是否可以接受。我的个人经验表明,“通用”Rust 代码性能更高,因为

  • 借用检查器可以安全地积极使用引用而不是副本
  • 相对容易使用多线程
  • 有助于避免多次执行工作的强类型系统

关于performance - 如何禁用 Rust 中的循环展开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com