#pragma unroll 是一个 编译器指令,用于提示编译器对接下来的 循环进行展开(loop unrolling) 优化
#pragma unroll for (int i = 0; i < 4; ++i) { a[i] = b[i] + c[i]; } // 这会提示编译器将循环展开成如下形式: a[0] = b[0] + c[0]; a[1] = b[1] + c[1]; a[2] = b[2] + c[2]; a[3] = b[3] + c[3]; // 这告诉编译器每次展开两次迭代,具体是否这样展开由编译器决定 #pragma unroll 2 for (int i = 0; i < 4; ++i) { a[i] = b[i] + c[i]; } // 禁止展开 #pragma unroll 1 #pragma nounroll