Teknik Optimasi By Kustanto S T M Eng
Teknik Optimasi By Kustanto, S. T. , M. Eng 11/5/2020 Teknik Optimasi by kustanto 1
Teknik Optimasi • Optimasi Lokal • Optimasi Global bertujuan untuk menghasilkan kode program yang berukuran lebih kecil dan lebih cepat 11/5/2020 Teknik Optimasi by kustanto 2
Teknik Optimasi : Optimasi Lokal : adalah optimasi yang dilakukan hanya pada suatu blok dari source code, dengan cara: ü Folding mengganti konstata atau ekpresi yang bisa dievaluasi pada saat compile time dengan nilai komputasinya. Misalnya: A : = 2 + 3 + B bisa diganti dengan A: = 5 + B 5 dapat mengantikan ekspresi 2 + 3 ü Redundant-Subexpression Elimination hasilnya digunakan lagi dari pada dilakukan computasi ulang, contoh: A: = B + C X : = Y + B + C 11/5/2020 Teknik Optimasi by kustanto 3
Teknik Optimasi : Optimasi Lokal n Contoh : FOR I : = 1 to 2 DO A[I] : = 0; //Pada contoh instruksi diatas , terdapat instruksi untuk inisialisasi I menjadi 1. Serta operasi penambahan nilai /increment 1 dan pengecekan nilai variabel I pada setiap perulangan. Shga untuk perulangan saja memerlukan 5 instruksi, ditambah dengan intruksi assignment pada tubuh perulangan menjadi 7 instruksi. dapat dioptimasikan menjadi A[1] : = 0; A[2] : = 0; Hanya memerlukan dua instruksi assignment saja. 11/5/2020 Teknik Optimasi by kustanto 4
Teknik Optimasi : Optimasi Lokal n Frequency Reduction: Pemindahan statement ke tempat yang lebih jarang dieksekusi, contoh FOR I: = 1 to 10 DO //maka X bisa dikeluarkan dari iterasi tersebut; BEGIN FOR I: = 1 to 10 DO X : = 5 //tidak terjadi perubahan; BEGIN A : = A + 1 END. 11/5/2020 X : = 5 Teknik Optimasi by kustanto 5
Teknik Optimasi : Optimasi Lokal ü Strength Reduction – Penggantian suatu operasi dengan operasi lain yang lebih cepat dieksekusi – misalnya: pada komputer operasi perkalian memerlukan waktu eksekusi lebih banyak dari pada operasi penjumlahan – contoh lain A: = A + 1 – dapat digantikan dengan INC(A) 11/5/2020 Teknik Optimasi by kustanto 6
Teknik Optimasi : Optimasi GLobal • Optimasi global biasanya dilakukan dengan analisis Flow, yaitu suatu graph terarah yang menunjukkan jalur yang mungkin selama eksekusi program • Ada dua kegunaan yaitu bagi programmer dan compiler itu sendiri ü Bagi Programmer – Unreachable/dead code: Kode yang tidak pernah dieksekusi – misalnya : X : = 5; IF X = 0 THEN A : = A + 1 Instruksi A : = A + 1 tidak akan pernah dikerjakan 11/5/2020 Teknik Optimasi by kustanto 7
Teknik Optimasi : Optimasi GLobal – Unused parameter : parameter yang tidak pernah digunakan dalam procedure • Misalnya : procedure penjumlahan(a, b, c ; Integer); var x : integer; begin x : = a + b; end Parameter c tidak pernah digunakan sehingga tidak perlu diikut sertakan 11/5/2020 Teknik Optimasi by kustanto 8
Teknik Optimasi : Optimasi GLobal • Unsused Variabel : variabel yang tidak pernah dipergunakan dalam program, contoh: Program pendek; var a, b: integer begin a : = 5; end; • Variabel b tidak pernah digunakan dalam program, sehingga bisa dihilangkan 11/5/2020 Teknik Optimasi by kustanto 9
Teknik Optimasi : Optimasi GLobal • Variabel : variabel yang dipakai tanpa nilai awal. Contoh Program Awal; var a, b: integer begin a : = 5 a : = a + b; end; n variabel b digunakan tetapi tidak memiliki harga awal ü Bagi Compiler – Meningkatkan efisiensi eksekusi program – Menghilangkan useless code/kode yang tidak terpakai dalam program 11/5/2020 Teknik Optimasi by kustanto 10
Tugas • 1. Lakukan optimasi lokal yang diperlukan pada potongan program berikut, dan jelaskan optimasi apa saja yang diterapkan: A: =B+10*4; C: =B+D; F: =B+D-G; FOR I: =1 to 100 Do BEGIN X: =X+I; A: =A+X; B: =7; END; 11/5/2020 Teknik Optimasi by kustanto 11
Tugas 2. Apakah kita dapat melakukan optimasi Redundant Sub expression Elimination pada statement berikut, mengapa? a. A: =B+C; A: =X+Y; F: =B+D+G+H; b. A: =B+C; B: =X+Y; F: =B+C+G+H; 11/5/2020 Teknik Optimasi by kustanto 12
Tugas 3. Bisakah kita melakukan optimasi frequency reduction pada loop berikut: 10 FOR I: =1 to 10 DO 20 A: =I+1; 30 Mengapa kita tidak dapat melakukan optimasi pada instruksi ke 20? 11/5/2020 Teknik Optimasi by kustanto 13
Tabel Informasi Dua fungsi penting Tabel Informasi l Untuk membantu pemeriksaan kebenaran semantik dari program sumber l Untuk membantu dan mempermudah dalam pembuatan intermediate code dan proses pembuatan kode-kode (pembangkitan kode) 11/5/2020 Teknik Optimasi by kustanto 14
Tabel Informasi - Implementasi Ada beberapa jenis Tabel Informasi l Tabel identifier; berfungsi menampung semua identifier yang terdapat dalam program l Tabel Array: berfungsi menampung informasi tambahan untuk sebuah array l Tabel Real: Menyimpan elemen tabel bernilai real l Tabel string: menyimpan informasi string 11/5/2020 Teknik Optimasi by kustanto 15
Tabel Informasi - Identifier Untuk identifier, pencatatan dapat berupa seperti; l Alamat relatif/address dari identifier untuk implementasi l Informasi referensi dari identifier terntentu ke alamat tabel identifier yang lainnya l link; menghubung antar identifier l Normal: digunakan pada pemanggilan parameter, untuk membedakan parameter by value dan by reference l Contoh (dalam pascal) 11/5/2020 Teknik Optimasi by kustanto 16
Tabel Informasi - Identifier Contoh kasus, terdapat sebuah listing program sebagai berikut: Program A; Var B : Integer; Procedure X (Z: char) var C : Integer begin. . . . Tabel identifier akan mencatat semua identifier; 0 1 2 3 4 11/5/2020 A B X Z C Teknik Optimasi by kustanto 17
Tabel Informasi - contoh Contoh implementasi tabel identifier: Tab. Id: Array [0. . tabmax] of record nama : String; link : integer; Obj : object; tipe : Types; ref : Integer; normal : Boolean; Level : 0. . Maxlevel; address : Integer; End; Dimana objek =(konstant, variabel, prosedur, fungsi) Types = (notipe, int, reals, booleans, chars, arrays, record 11/5/2020 Teknik Optimasi by kustanto 18
Tabel Informasi - Array Tabel Array dipergunakan untuk menyimpan informasi suatu identifier yang bertipe array, tabel ini memilik field: l No. Urut suatu array dalam tabel l Tipe dari indeks array yang bersangkutan l Tipe element array l Referensi dari elemen array l Index batas dan bawah array l Jumlah elemen array l Ukuran total array (total = atas - bawah + 1) * elemen size l Elemen size (ukuran tiap elemen) 11/5/2020 Teknik Optimasi by kustanto 19
Tabel Array • Tabel array diacu dengan field referensi pada tabel identifier. • Contoh implementasi tabel array: Tab. Array: array [1…tabmax] of record indextype, elementype: types; elemenref, low, high, elemensize, tabsize: integer end; 11/5/2020 Teknik Optimasi by kustanto 20
Tabel Informasi - Implementasi Tabel Real Dipergunakan untuk menyimpan nilai dari suatu identifier yang bertipe real. Elemenelemen dari tabel ini adalah sebagai berikut; v NO urut elemen v Nilai real suatu variabel real yang mengacu ke indeks tabel ini Contoh implementasi tabel real: Tab. Real: array [1. . Tabmax] of real; Pemikirannya disini setiap tipe yang memiliki oleh suatu bahasa akan memiliki tabelnya sendiri 11/5/2020 Teknik Optimasi by kustanto 21
Tabel Informasi - Implementasi Tabel String Dipergunakan untuk menyimpan informasi string yang terdapat pada program sumber. Elemen-elemen yang terdapat dalam tabel ini adalah: v No urut elemen v Karakter-karakter yang merupakan konstanta v Contoh implementasi tabel string: Tab. String: array [1. . tabmax] of string 11/5/2020 Teknik Optimasi by kustanto 22
Tugas 1. Apa kegunaan tabel informasi, jelaskan? 2. Mengapa diperlukan referensi ke tabel lain dari tabel simbol, jelaskan? 11/5/2020 Teknik Optimasi by kustanto 23
TERIMA KASIH 11/5/2020 Teknik Optimasi by kustanto 24
- Slides: 24