我有以下一段简单的代码可能会被执行数亿次;
for (int i = 0; i < 8; i++)
if (((p[i].X >= x) && (p[i].X <= x + d))
&&((p[i].Y >= y) && (p[i].Y <= y + d))
&&((p[i].Z >= z) && (p[i].Z <= z + d)))
return 1;
Visual C ++ 2010编译器中的优化器是否会为我重新启动此循环,或者我最好手动执行此操作?我查看了other similar questions,但没有看到任何具体结果。我
答案 0 :(得分:1)
真正的问题是,你从展开中获得了什么?
为每个&#34;展开&#34;展开一个分支(if i >= 8 stop
)的剃须。
你的循环体已包含6个分支(if
* 1,||
* 2,&&
* 3);那么展开它还有很多好处吗?
看看代码如何优化可能会很有趣;但我不确定展开是否应该成为您的主要关注点,我更担心复杂条件的处理方式!