如果其中没有任何东西,循环会更快吗?

问题描述 投票:0回答:1

这可能是一个愚蠢的问题,如果函数中没有任何内容,显然任何事情都会更快,因为它不需要处理任何事情。但是,我搞砸了SFML,因此决定尝试使用for循环滞后我的程序(因为每个游戏循环都是1帧)。

我制作了一个循环,每1帧计数为50,000,000,说实话,它仍然以10 FPS的速度运行。但是,第二秒钟我放置了std::cout << index << std::endl;,程序将不会在处完成一帧,并且每10秒钟会计数1000。

内部没有任何东西的循环真的会使它快得多吗?

c++ sfml
1个回答
1
投票

如果您的循环中没有任何内容,而仅计数为:

for (int i = 0; i < 50; ++i) {}

然后,任何体面的优化器都会简单地删除整个循环,因此甚至不会执行计数。原因是没有副作用,因此删除循环会得到一个等效的程序。

即使以后再打印i计数器变量,大多数优化器仍然可以删除循环,因为他们知道i将在循环后为50

因此,可以优化的“空”循环无限快。

© www.soinside.com 2019 - 2024. All rights reserved.