gpt4 book ai didi

c++ - 有没有办法关闭 C++ 和 Rust 编译的循环优化?

转载 作者:行者123 更新时间:2023-11-29 08:14:34 36 4
gpt4 key购买 nike

我正在寻找一个编译器标志,它允许我阻止编译器优化代码中的循环,如下所示:

void func() {
std::unique_ptr<int> up1(new int(0)), up2;
up2 = move(up1);
for(int i = 0; i < 1000000000; i++) {
if(up2) {
*up2 += 1;
}
}
if(up2)
printf("%d", *up2);
}

在 C++ 和 Rust 代码中。我试图在速度方面比较相似的代码部分,运行这个循环而不是仅仅评估整体结果很重要。由于 Rust 静态地保证指针所有权没有被移动,它不需要在循环的每次迭代中检查空指针,我想因此如果循环不能针对任何情况进行优化,它会产生更快的代码原因。

Rust 使用 LLVM 后端进行编译,所以我最好也将其用于 C++。

最佳答案

在 Rust 中你可以使用 test::black_box .

在 C++ 中(使用 gcc)asm volatile("": "+r"(datum));。参见 this .

关于c++ - 有没有办法关闭 C++ 和 Rust 编译的循环优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718916/

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