std::vector<int> someVector;
for (unsigned int i = 0; i < someVector.size(); i++)
{
// do something
}
的值是否为someVector.size()
得到计算每次?
我已经检查过海湾合作委员会探险家:
输入的代码:
#include<vector>
int sum(const std::vector<int> & someVector) {
int s = 0;
for (int i = 0; i < someVector.size(); i++) {
s += someVector[i];
}
return s;
}
int main() {
std::vector<int> someVector;
return sum(someVector);
};
为 sum() 生成的程序集:
movq (%rdi), %rcx
movq 8(%rdi), %rdx
xorl %eax, %eax
cmpq %rcx, %rdx
je .LBB0_3
subq %rcx, %rdx
sarq $2, %rdx
xorl %eax, %eax
xorl %esi, %esi
.LBB0_2: # =>This Inner Loop Header: Depth=1
addl (%rcx,%rsi,4), %eax
incq %rsi
cmpq %rdx, %rsi
jb .LBB0_2
.LBB0_3: # %._crit_edge
ret
即尺寸保持在%rdx
-- 没有电话size()
每一次。
正如其他人已经指出的那样,结果可能取决于
- 你的编译器,
- 优化设置和
- 您在循环中实际执行的操作(单击上面的 gcc 资源管理器链接自行尝试)。
无需计算任何内容,整个循环就会得到优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)