Уменьшения времени на операции, не связанные с выполнением тела цикла, можно добиться путем развертки или объединения циклов.
Под разверткой цикла понимают увеличение шага цикла или удаление короткого внешнего цикла. Например:
- увеличение шага цикла
DO 1 I = I, N DO 1 I= 2, N, 2
A(I)= B(I) * C(I) A(I-1) = B(I-1) * C(I-1)
1 CONTINUE A(I) =B(I) * C(I)
1 CONTINUE
- отказ от короткого внешнего цикла
For i:=1 to 3 do For j:=1 to n do begin
For j:=1 to n do x[1,j]:=y[1,j]+z[1,j];
x[i,j]:=y[i,j]+z[i,j]; x[2,j]:=y[2,j]+z[2,j];
x[3,j]:=y[3,j]+z[3,j];
end;
- объединение циклов
For j:=1 to n do For i:=1 to n do begin
a[j]:=j*5; a[i]:=i*5;
For i:=1 to n do b[i]:=k[i]*3-6
b[i]:=k[i]*3-6; end;
Как видно из приведенных выше примеров, путем развертки или
объединения циклов, можно значительно уменьшить число повторений
тела цикла и тем самым сократить накладные расходы.