c++ - VS2010 C++优化是否做循环展开

标签 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但看不到任何具体结果。我

最佳答案

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

对于每个“展开”,展开都会刮掉一个分支(if i >= 8 stop)。

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

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

关于c++ - VS2010 C++优化是否做循环展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266923/

相关文章:

visual-studio-2010 - 从 .net 4.0 转换为 .net 3.5 时出现错误.. 无法加载文件或程序集 'System.Drawing,Version 4.0.0.0, Culture=natural...' 错误

php - 在 while 循环内加速 mysql 查询

python - 可以多次拜访客户的 CVRP

c++ - 如何dlopen jemalloc动态库

c++ - Linux gdb 'examine' 行为

c++ - 为什么 OPENFILENAME lpstrFileTitle 参数是 LPSTR 而不是 LPCSTR?

c++ - GL_UNSIGNED_SHORT_5_6_5 未声明?

c# - 如何在 20 分钟后在 asp.net 中停止 session 超时?

c++ - 编译器添加的优化导致 "final"方法的不同行为

c++ - Linux进程分配的内存使用情况