我有以下一段简单的代码可能会被执行数千万次;是否VS2010 C++优化循环展开
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,但没有看到任何具体结果。我
如果您不确定并且循环时间不是太长,自行展开并没有太大的伤害 - 假设它当然是一个瓶颈,并且您希望获得更多性能,同时可能降低可读性。虽然我会想象VS2010会展开循环。 – Rapptz 2013-03-07 09:05:57
你知道这个代码运行的确切硬件平台吗?然后,我会建议简单地手动展开它,并测量发生的事情,而不是猜测编译器做了什么(基于他的猜测:-))。 – Philipp 2013-03-07 09:08:46
我希望VS2010会为我做这件事,但可能会尝试分析这两个版本。也许看看汇编输出。 – 2013-03-07 09:08:55