内部评估的布尔条件以获得循环性能
Boolean condition evaluated inside for loop performance
我有两个循环。我不明白为什么第一个比第二个跑得更快。你能解释得尽可能简单吗?
第一:
for (int x1=0;x1<1000;x1++){
for(int x2=0;x2<1000;x2++){
if(x1<500){
a[x2+x1*1000]=100;
}
}
}
第二:
bool cond;
for (int x1=0; x1<1000; x1++) {
cond = x1<500;
for(int x2=0; x2<1000; x2++){
if(cond){
a[x2+x1*1000] = 100;
}
}
}
(我简化了我的代码)
最简单的答案是当你使用
if(x1<500){
a[x2+x1*1000]=100;
}
您实际上正在使用一种直接方法,其中比较值并完成工作,但是当您使用
if(cond) {
a[x2+x1*1000] = 100;
}
然后它首先计算 "cond" 的答案,然后应用 if 条件,更具体地说,你可以把它当作 cond 是一个函数调用,if(x1<500) 是 main() 中的简单比较。希望你得到了答案,如果你想知道关于这个话题的任何其他信息,告诉我:)
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- OpenMP for 循环并行性问题
- 有没有办法重复循环循环?
- 需要帮助编写一个小程序来将循环乘以 n 个元素和 k 个多重性
- 虽然第三次循环循环,尽管在我眼中没有满足它的条件,因此打印了一个空字符串
- 避免以不同的迭代剂的循环循环避免几乎相同的代码重复
- 循环循环保存到数组,然后访问;
- 对于循环循环仅 3 次
- 处理媒体循环循环循环通过向量中的对象的各个方面
- 将C转换为循环循环循环
- 如何使用循环检查等效性,然后在没有等效性的情况下执行一些代码?
- 在两者中使用基类和派生类作为数组时的循环性
- 关于如何正确循环循环并找到最小的价值,需要基本C 的帮助
- 我如何循环循环switch语句检查重新检查char?(C )
- 在嵌套循环/循环不变量中检查一次
- 用STL算法替换for循环,同时允许并行性
- 虽然循环与空体检查易失性整数 - 这意味着什么
- 如何使用具有循环依赖性的组件模式正确地使用多态性