gpt4 book ai didi

compiler-optimization - 如何防止忙等待的优化

转载 作者:行者123 更新时间:2023-12-04 12:57:04 26 4
gpt4 key购买 nike

我需要一个忙等待函数。

for(long int j=0; j<50000000; ++j)
;

当我在 Release模式下编译时,这会被优化掉。除了在 Debug模式下编译之外,还有什么方法可以使它得到优化吗?我并不特别关心循环的实际数量,但它必须是明显的忙延迟。

最佳答案

我不知道为什么你需要让 CPU 保持忙碌,但让我们假设你确实有一个很好的理由,比如确保你让 CPU 保持忙碌,这样它就不会考虑上周经历的那次分手变得很沮丧,但我离题了……

您看到的问题是编译器执行“死代码消除”:它发现循环什么都不做(即没有副作用),因此将其删除。所以你可以让它产生副作用。

一个简单的解决方案是这个函数:

void busywait(long iterations)
{
for(volatile long i = 0; i != iterations; i++)
;
}

通过将 i 标记为 volatile 您可以确保循环具有副作用,因为对 volatile 对象的存储(即我们执行的递增)被视为具有副作用-效果。

关于compiler-optimization - 如何防止忙等待的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13921753/

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