Tampilkan postingan dengan label Teknik Optimasi. Tampilkan semua postingan
Tampilkan postingan dengan label Teknik Optimasi. Tampilkan semua postingan

Jumat, 26 Oktober 2012

Pengertian Optimasi Global

Optimasi Global
Dilakukan dengan analisis flow, yaitu suatu graph berarah yang menunjukkan jalur yang mungkin selama eksekusi program. Ada 2 kegunaan optimasi global, yaitu bagi para programmer dan untuk compiler itu sendiri.

1. Bagi Programmer
a.Unreachable / dead code : Kode yang tidak pernah dieksekusi
Misalnya :
X := 5;
IF X = 0 THEN
A := A + 1
Instruksi
A := A + 1
Tidak pernah dikerjakan karena kondisi X tidak pernah menjadi 0, sehingga memperlambat proses.

b.Unused parameter : parameter yang tidak pernah digunakan dalam prosedur
Misalnya :
Procedure penjumlahan(a,b,c; Integer);
Var x : integer;
Begin
x := a + b;
End
Parameter c tidak pernah digunakan sehingga tidak perlu diikutsertakan dikarenakan pada prosedur penjumlahan c tidak pernah dikenakan suatu proses atau nilai

c.Unused variable
: variabel yang tidak pernah digunakan dalam program.
Misalnya :
Var a,b : Integer;
Begin
a := 5;
end;
Variabel b tidak pernah digunakan dalam manipulasi, sehingga tidak perlu dideklarasikan

d.Variable : variabel yang dipakai tanpa nilai awal
Misalnya :
Var a,b : Integer;
Begin
a := 5;
a := a + b;
end;
Variabel b digunakan tetapi tidak memiliki harga awal

2.Bagi Compiler
a.Meningkatkan efisiensi eksekusi program
b.Menghilangkan useless code / kode yang tidak terpakai

Kamis, 25 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)

Rabu, 24 Oktober 2012

Pengertian Teknik Optimasi

Teknik Optimasi
Teknik Optimasi Bertujuan menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebih cepat eksekusinya.

Berdasarkan ketergantungan pada mesin :
1.Machine Dependent Optimizer
Kode dioptimasi sehingga lebih efisien pad mesin tertentu. Optimasi ini memerlukan informasi mengenai feature yang ada pada mesin tujuan dan mengambil keuntungan darinya untuk menghasilkan kode yang lebih pendek atau dieksekusi lebih cepat.

2.Machine Independent Optimizer
Strategi optimasi yang bisa diaplikasikan tanpa tergantung pada mesin tujuan tempat kode yang dihasilkan akan dieksekusi nantinya.