10得票2回答
Java JIT循环展开策略?

JIT的循环展开策略是什么?如果没有简单的答案,那么我可以通过某种方式检查循环中何时/在哪里执行了循环展开吗?GNode child = null; for(int i=0;i<8;i++){ child = octree.getNeighbor(nn, i, MethodFlag...

7得票3回答
杜夫设备还有用吗?

我看到Duff的设备只是在C中进行循环展开。 https://en.wikipedia.org/wiki/Duff%27s_device 我不确定它现在为什么还有用。编译器难道不应该足够聪明,能够进行循环展开吗?

19得票5回答
C/C++中的自解卷宏循环

我目前正在进行一个项目,每个循环都非常重要。在分析我的应用程序时,我发现某些内部循环的开销非常高,因为它们只由几条机器指令组成。此外,这些循环中的迭代次数在编译时已知。 所以我想,与其手动复制和粘贴展开循环,不如使用宏在编译时展开循环,这样可以轻松修改。 我想象的是这样的:#define ...

46得票1回答
#pragma unroll 究竟是做什么的?它会影响线程数吗?

我是CUDA的新手,不理解循环展开。我写了一段代码来学习这个技术。 __global__ void kernel(float *b, int size) { int tid = blockDim.x * blockIdx.x + threadIdx.x; #pragma unrol...

21得票3回答
如何阻止Clang在使用模板时过度展开嵌套循环?

考虑这段代码: #include <iostream> typedef long xint; template<int N> struct foz { template<int i=0> static void foo(xint t) { ...

15得票2回答
如何使用g++向量化我的循环?

我在搜索时找到的介绍链接: 6.59.14 循环特定的 Pragmas 2.100 Pragma Loop_Optimize 如何告诉gcc循环次数 告诉gcc特定展开一个循环 如何在C++中强制使用向量化 正如您所看到的,它们大多是为C而设计的,但我认为它们在C++上也可能有效。 这...

11得票1回答
GCC中的循环展开行为

这个问题部分是关于GCC 5.1 循环展开的后续问题。 根据GCC文档和我对上述问题的回答,像-funroll-loops这样的标志会打开"完整的循环剥离(即完全删除少量迭代的循环)"。因此,当启用该标志时,编译器可以选择展开一个循环,如果它确定这将优化给定代码的执行。 尽管如此,我注意到...

9得票3回答
为什么循环展开对大数据集没有影响?

我想测试在triangle对象上应用展开循环和for循环的执行速度差异。完整示例请点击这里。 以下是完整代码: #include <iostream> #include <vector> #include <array> #include <ran...

7得票3回答
使用gcc展开循环的正确方法

#include <stdio.h> int main() { int i; for(i=0;i<10000;i++){ printf("%d",i); } } 我想使用GCC对这段代码进行循环展开,但即使使...

7得票2回答
为什么Hotspot JIT不对长计数器执行循环展开?

我刚刚阅读了《Java杂志》的文章《循环展开》。在那里,作者展示了简单的for循环与int计数器一起编译时会优化为循环展开: private long intStride1() { long sum = 0; for (int i = 0; i < MAX; i += ...