VS2010 C ++优化是否进行循环展开

时间:2013-03-07 09:03:37

标签: c++ visual-studio-2010 optimization

我有以下一段简单的代码可能会被执行数亿次;

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,但没有看到任何具体结果。我

1 个答案:

答案 0 :(得分:1)

真正的问题是,你从展开中获得了什么?

为每个&#34;展开&#34;展开一个分支(if i >= 8 stop)的剃须。

你的循环体已包含6个分支(if * 1,|| * 2,&& * 3);那么展开它还有很多好处吗?

看看代码如何优化可能会很有趣;但我不确定展开是否应该成为您的主要关注点,我更担心复杂条件的处理方式!