Опубликован: 12.07.2012 | Доступ: свободный | Студентов: 354 / 25 | Оценка: 4.00 / 4.20 | Длительность: 11:07:00
Тема: Программирование
Специальности: Программист
Теги:
Лекция 4:
Optimizing compiler. Loop optimizations
Some example estimation for loop unswitching effectivenes:
int main() { float x[1000],y[1000]; int i,repeat,p; for(i=0;i<1000;i++) { y[i] = i; x[i] = 1; } for(repeat=0;repeat<3000000;repeat++) { p=repeat%10>5; #ifdef PERF if(p) { for(i=0;i<1000;i++) { x[i]=x[i]+y[i]; y[i]++; } } else { for(i=0;i<1000;i++) { x[i]=x[i]+y[i]; } } #else for(i=0;i<1000;i++) { x[i]=x[i]+y[i]; if(p) { y[i]++; } } #endif } printf("x[123]= %f\n",x[123]); }
увеличить изображение
Рис. 4.5. Comparison of branch missprediction events for original and modified tests