Jumat, 26 Oktober 2012

Pengertian Optimasi Lokal

Optimasi Lokal
Optimasi yang dilakukan hanya pada suatu blok dari source code, dengan cara :
1. Folding
Nilai konstanta atau ekspresi yang bisa dievaluasi pada saat compile time diganti dengan nilai komputasinya.
Contoh instruksi :
A:=2+3+B
diganti menjadi
A:=5+B

2. Redundant – Subexpression Elimination
Menggunakan hasil komputasi terdahulu daripada melakukan komputasi ulang.
Contoh urutan instruksi :
A:=B+C
X:=Y+B+C
B+C redundan, bisa memanfaatkan hasil komputasi sebelumnya, selama tidak ada perubahan nilai pada  variabel.

3. Optimasi dalam sebuah iterasi

a.Loop Unrolling 
Menggantikan suatu loop dengan menulis statement dalam loop beberapa kali. Hal ini didasari pemikiran, sebuah iterasi pada implementasi level rendah akan memerlukan operasi sebagai berikut.
1.Inisialisasi / pemberian nilai awal pada variabel loop. Dilakukan sekali pada saat permulaan eksekusi loop.
2.Pengujian, apakah variabel loop telah mencapai kondisi terminasi.
3.Adjustment yaitu penambahan atau pengurangan nilai pada variabel loop dengan jumlah tertentu.
4.Operasi yang terjadi pada tubuh perulangan (loop body).
Dalam setiap perulangan akan terjadi pengujian dan adjusment yang menambah     waktu eksekusi.
Contoh instruksi :
FOR I:=1 to 2 DO
A[I]:=0;
dioptimasi menjadi
A[1] := 0;   
A[2] := 0;

Pada instruksi pertama yang menggunakan iterasi perlu dilakukan inisialisasi setiap eksekusi loop, pengetesan, adjustment, dan operasi pada tubuh perulangan. Yang kesemuanya itu menghasilkan banyak instruksi. Karena itu dengan optimasi hanya memerlukan dua instruksi assignment.

b.Frequency Reduction 
Memindahkan statement ke tempat yang lebih jarang dieksekusi.
Contoh instruksi :
FOR I:=1 TO 10 DO
BEGIN
X:=5;
A:=A+1;
END;
Variabel X dapat dikeluarkan dari iterasi, menjadi :
X:=5;
FOR I:=1 TO 10 DO
BEGIN
A:=A+1
END;

4. Strength Reduction
Mengganti suatu operasi dengan jenis operasi lain yang lebih cepat dieksekusi.
Contoh : 
Pada beberapa komputer operasi perkalian memerlukan waktu lebih banyak untuk dieksekusi dari pada operasi penjumlahan, maka penghematan waktu bisa dilakukan dengan mengganti operasi perkalian tertentu dengan penjumlahan. 

Contoh lain :
A := A + 1
Dapat digantikan dengan
INC(A)

Tidak ada komentar:

Posting Komentar