download

Matakuliah
Tahun
: T0034 / Perancangan & Analisis Algoritma
: 2008
Pertemuan 18
CODE OPTIMIZATION
MENGAPA PERLU OPTIMISASI?
• Perbedaan algoritma dapat membawa perbedaan yang
sangat besar pada kinerja sebuah program.
• Optimisasi algoritma adalah membuat sebuah algoritma
dapat bekerja secara lebih optimal.
• Bisa dilakukan dari tingkat yang paling sederhana hingga
tingkat yang paling sulit.
• Terkadang sebuah optimisasi yang kelihatan sepele dapat
menyebabkan perbedaan yang besar ketika sebuah
algoritma diimplementasikan menjadi program komputer.
[buku utama, bab 10.1]
Bina Nusantara
LEVEL BAHASA PEMROGRAMAN
• Bahasa pemrograman tingkat tinggi  lebih dekat
ke bahasa manusia
• Bahasa pemrograman tingkat rendah  lebih
dekat ke bahasa mesin
• Komputer memproses peritnah kita dalam
instruksi-instruksi sederhana yang terdiri atas kode
instruksi dan data.
Bina Nusantara
INSTRUKSI
LOAD X = load accumulator dengan isi dari memori lokasi X
STORE X = Store isi dari accumulator ke memori lokasi X
OP X, OP mungkin ADD, SUB, MPY, atau DIV.
Definisi :
Suatu terjemahan dari suatu ekspressi E ke dalam suatu mesin atau
bahasa assembly pada suatu mesin tertentu, adalah optimal jika dan
hanya jika mempunyai jumlah instruksi yang minimal.
Bina Nusantara
OPTIMISASI BAHASA TINGKAT RENDAH
Misalkan suatu ekspressi matematik: ( a+ b ) / ( c + d ) akan diterjemahkan
ke bahasa assembly, ada dua macam bentuk instruksi yang dapat di buat:
LOAD
ADD
STORE
LOAD
ADD
STORE
LOAD
DIV
a
b
T1
c
d
T2
T1
T2
( a )
LOAD
ADD
STORE
LOAD
ADD
DIV
c
d
T1
a
b
T1
( b )
Dapat dilihat bahwa instruksi (a) mempunyai dua instruksi lebih panjang
dari instruksi (b). Jadi instruksi (b) adalah yang optimal.
Bina Nusantara
OPTIMISASI BAHASA TINGKAT TINGGI
• Berfokus pada bagaimana menyederhanakan
Fungsi Kompleksitas
• Trik dasar
–
–
–
–
Bina Nusantara
Mengurangi jumlah perulangan
Meningkatkan efektivitas kondisi dalam if
Menempatkan penyaringan kondisi di lokasi yang benar
Mencari pola pikir lain untuk menyelesaikan masalah
(kembali ke dasar)
CONTOH KASUS
1
2
3
4
5
6
7
8
9
10
for i=1 to 10 do
for j=1 to 3 do
A[i,j]=7
end for
end for
for i=1 to 3 do
for j=1 to 5 do
A[i,j]=7
end for
end for
[buku utama, pseudocode 10.1]
Bina Nusantara
ANALISIS
• Terdapat redundansi
Bina Nusantara
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
HASIL OPTIMISASI
1
2
3
4
5
6
7
8
9
10
for i=1 to 10 do
for j=1 to 3 do
A[i,j]=7
end for
end for
for i=1 to 3 do
for j=4 to 5 do
A[i,j]=7
end for
end for
[buku utama, pseudocode 10.1b]
Bina Nusantara
CONTOH KASUS 2
1 for i=1 to 1000000 do
2
for j=1 to 560000 do
3
if (i mod 2)=0 then
4
display A[i,j]
5
end if
6
end for
7 end for
[buku utama, pseudocode 10.2]
Bina Nusantara
1 for i=1 to 1000000 do
2
if (i mod 2)=0 then
3
for j=1 to 560000 do
4
display A[i,j]
5
end for
6
end if
7 end for
[buku utama, pseudocode 10.2b]
LATIHAN
• Metode Binary Search adalah teknik pencarian
data tertentu di dalam sebuah array yang sudah
berurut. Pembahasan Binary Search sudah
diberikan di Pertemuan 10. Adakah cara untuk
meningkatkan kecepatan pencarian Binary
Search? Coba lakukan optimisasi pada
psesudocode 5.7 atau pseudocode 5.8 di buku
utama !
Bina Nusantara
REVIEW
• Apa yang sudah dipahami?
• Apa yang akan dibahas selanjutnya?
Bina Nusantara