当我编译我的应用程序时,性能比我预期的要差,我发现编译器正在报告如下警告。
备注#25461:不完整的循环展开 - 由2(预矢量)
干扰这是我的短代码。
hLine
索引变量num是alwasy 1024.为什么循环unroll-jammmed不完美?此外,当我修改如下所示的代码时,不会发生展开卡纸!发生展开干扰的条件是什么?
for(i=0; i<num; i++){
values[i] = func(a, b, c);
}
实际上,代码是大文件的一部分,所以我不能在这里编写整个代码。但下面的代码包括func()。
for(i=0; i<num; i++){
value += func(a, b, c);
}
答案 0 :(得分:0)
我创建了一个实际编译的代码版本:
数学上的溢出可能已经发生了,但我没有检查那个然后跑了。
它眨眼间就跑了
以下是代码:
#include <stdio.h>
#define num (1024)
int values[num];
int value;
int a=2;
int b=3;
int c=4;
int func(int a, int b, int c)
{
int i=0;
int total=0;
for(i=0; i<num; i++){
total = a*b+c;
}
return total;
}
int main(void){
int i=0;
//int min=0;
for(i=0; i<num; i++){
values[i] = func(a, b, c);
}
for(i=0; i<num; i++){
value = values[i];
}
printf("value: %d\n", value);
return 0;
}