VS2010 c++优化做循环展开吗?
Does VS2010 C++ optimization do loop unrolling
我有一段简单的代码,它可能会被执行数亿次;
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编译器中的优化器会为我展开这个循环吗,还是我最好手动执行?我看过其他类似的问题,但没有看到任何具体的结果。我
真正的问题是,您从展开中获得了什么?
每一次"unroll"将削去一个分支(if i >= 8 stop
)。
你的循环体已经包含6个分支(if
* 1, ||
* 2, &&
* 3);那么展开它有什么好处吗?
看看代码是如何优化的可能会很有趣;但我不确定展开是否应该是你的主要关注点,我更担心的是如何处理复杂的情况!
相关文章:
- 循环展开 - G++ 与 Clang++
- 编译时展开循环
- 通过循环展开和阻塞进行优化
- 部分模板专用化,用于展开特定大小的循环
- 使用 constexpr 或模板元编程简化较长的展开循环表达式
- 为什么Visual Studio Compiler不在我的Mersenne-Twister实现中循环展开?
- 循环展开和元编程(TMP)
- 为什么在 XCode 中默认循环展开
- 是否有任何预处理器指令控制循环展开
- C++模板元编程成员函数循环展开
- C++循环展开性能差异(欧拉项目)
- SSE 内联函数和循环展开
- 仅当循环展开时,才没有未指定的启动错误
- C++ 循环展开性能
- 嵌套循环展开
- 有利于循环展开的条件和返回边际减小的点
- c++循环展开,边界
- GCC中的循环展开行为
- c++循环展开为编译时常数小值
- VS2010 c++优化做循环展开吗?