shi*_*zou 4 c++ performance runtime
如果在循环的条件部分中进行大量计算,运行时是否存在差异?
例如:
int i,n;
for(i=1;i<=[call to some complex function on n];i++)
...
Run Code Online (Sandbox Code Playgroud)
要么
int i,n,foo;
foo=[call to some complex function on n];
for(i=1;i<=foo;i++)
...
Run Code Online (Sandbox Code Playgroud)
哪一个更有效率?循环是进行一次计算还是每次迭代?
是的,除非函数是const并且编译器可以将其降低到常量值,否则for循环的条件部分中提供的函数将会出现"性能损失".编译器需要为每次迭代调用该函数.
我强烈建议在进入循环之前将函数的结果放入一个常量临时变量中.
例:
const unsigned int limit = my_vector.size();
for (unsigned int i = 0; i < limit; ++i)
{
// iterate over vector
}
Run Code Online (Sandbox Code Playgroud)