gpt4 book ai didi

c++ - 如果繁重的计算函数位于循环的条件部分,运行时间是否会有所不同?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:32 26 4
gpt4 key购买 nike

如果在循环的条件部分进行繁重的计算,运行时间是否会有所不同?

例如:

int i,n;
for(i=1;i<=[call to some complex function on n];i++)
...

或者

int i,n,foo;
foo=[call to some complex function on n];
for(i=1;i<=foo;i++)
...

哪个更有效率?循环是计算一次还是每次迭代都计算一次?

最佳答案

是的,for 循环的条件部分中提供的函数会有“性能损失”除非函数是 const 并且编译器可以将其缩减到一个常数值。编译器需要为每次迭代调用该函数。

我强烈建议在进入循环之前将函数的结果放入常量临时变量中。

例子:

const unsigned int limit = my_vector.size();
for (unsigned int i = 0; i < limit; ++i)
{
// iterate over vector
}

关于c++ - 如果繁重的计算函数位于循环的条件部分,运行时间是否会有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323288/

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