Kuliah 22 Optimisasi Kode.

Slides:



Advertisements
Presentasi serupa
Pemograman berorientasi prosedur merupakan bahasa pemrograman yang melibatkan fungsi-fungsi atau prosedur-prosedur sebagai sub program untuk membentuk.
Advertisements

Input dan output Data Dalam bahasa Pascal untuk keperluan input (membaca input) digunakan identifier standar READ atau READLN. ReadLn digunakan untuk.
STRUKTUR PERULANGAN Statemen ini di gunakan untuk memproses statemen-statemen tertentu berulang kali. Struktur perulangan While … Do Jenis perulangan.
Pembentukan Kode Intermediate
Pembentukan kode intermediate (contd) Skema transisi untuk Statement flow of control 1)S  if E then M 1 S 1 N else M 2 S 2 {backpatch(E.truelist, M 1.quad);
Dasar Komputer & Pemrog 2 A minggu 4
panduan praktis belajar VISUAL BASIC 6.0
Hanya dipergunakan untuk kepentingan pengajaran di lingkungan Telkom Applied Science School MI1264 Dasar Algoritma dan.
< > <= >= = <> lebih kecil dari lebih besar dari
Struktur Kontrol (2) As’ad Djamalilleil
Pemrograman Terstruktur
Computer Science, University of Brawijaya Putra Pandu Adikara, S.Kom Algoritma dan Struktur Data Seleksi Kondisi.
PERULANGAN Komang Kurniawan W., M.Cs.
Algoritma dan Struktur Data
Situasi Saat Program Berjalan (Run-time Environment)
Teknik Optimasi.
TEKNIK OPTIMASI.
STORED PROCEDURE Achmad Yasid, SKom.
Chapter 8 Tabel Penguraian LR Kanonik & LALR.
Struktur Kendali Proses (Perulangan)
Operasi Perulangan pada FORTRAN Pertemuan 6
Algoritma & Struktur Data Looping, Percabangan dan Array Evangs Mailoa.
Tenia Wahyuningrum.  Struktur kontrol pengulangan Digunakan untuk menjalankan satu atau beberapa pernyataan sebanyak beberapa kali.  Tipe: Pengulangan-while.
Tenia Wahyuningrum.  Struktur kontrol pengulangan Digunakan untuk menjalankan satu atau beberapa pernyataan sebanyak beberapa kali.  Tipe: Pengulangan-while.
Algoritma dan Struktur Data Marsel W. Aipassa, S.Kom.
Pengulangan.
STRUKTUR PERULANGAN BAG 2 ( STRUKTUR WHILE DO & REPEAT UNTIL )
PERULANGAN RISMAYUNI.
MATERI PERKULIAHAN TEKNIK KOMPILASI
MATERI PERKULIAHAN TEKNIK KOMPILASI
Materi Kuliah 1. Pertemuan ke : 1 Pengenalan Komputer dan Pemrograman
Algoritma Pemrograman 2A
ALGORITMA PEMROGRAMAN 2A
ALGORITMA PEMROGRAMAN 2A
Istiqomah, S.Kom/Tekkom 2013
PERULANGAN WHILE.
penyusunan algoritma (flowchart)
Counter dan Accumulator
Pertemuan 6 KONVERSI NFA MENJADI DFA Lanjutan..
Pengulangan.
As’ad Djamalilleil Struktur Kontrol (2) As’ad Djamalilleil
Pengulangan.
Teknik Optimasi.
AP2A Perulangan & Array PJ : Wawan Setiawan 07
TEKNIK OPTIMASI Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebit cepat eksekusinya. Berdasarkan ketergantungan pada mesin : Machine.
STRUKTUR PERULANGAN.
For, while, do/while Sussi.
PENYELEKSIAN KONDISI.
PERULANGAN.
Pengulangan.
Keterampilan komputer 1AB
Pengontrolan Alur Program
Oleh: Abdul Haris Heryani
Pengontrolan Alur Program
Dasar-Dasar Pemrograman
PENGULANGAN ALGORITMA & STRUKTUR DATA I PROGRAM STUDI SISTEM INFORMASI
TEKNIK OPTIMASI Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebit cepat eksekusinya. Berdasarkan ketergantungan pada mesin : Machine.
MATERI PERKULIAHAN TEKNIK KOMPILASI
Testing dan Implementasi
Pengulangan While - Do Temu 10.
Pengulangan FOR - DO Temu 8.
Pengulangan Repeat – Until (lanjutan)
TEKNIK OPTIMASI.
1 Algoritma dan Pemrograman STRUKTUR PERULANGAN. 2 JENIS-JENIS PERULANGAN 1.FOR-TO-DO / FOR-DOWNTO-DO 2.WHILE-DO 3.REPEAT-UNTIL.
While – Do (Lanjutan) Temu 11.
Bab 7 Perulangan.
Counter dan Accumulator
TEKNIK OPTIMASI.
Counter dan Accumulator
FONDASI PEMROGRAMAN & STRUKTUR DATA #2 - 4
Transcript presentasi:

Kuliah 22 Optimisasi Kode

Blok Dasar dan Graph Alur (Basic Blocks and Flow Graphs) Blok dasar adalah suatu barisan statement berurutan dimana kendali alur (flow of control) memasuki blok pada awal blok dan meninggalkan blok pada bagian akhir blok tanpa halt atau branching kecuali pada bagian akhir. Berikut contoh blok dasar t1 := a*a t2 a*b t3 2*t2 t4 t1+t3 t5 b*b t6 t4+t5

Algoritma: Partisi ke blok dasar Input: barisan statement tiga alamat Output : list blok dasar, kode tiga alamat terpilah-pilah masing-masing hanya dalam masing-masing satu blok Metoda: Tentukan himpunan leader, yakni statement pertama dari blok dasar. Statement pertama adalah leader Sembarang statement yang merupakan target dari goto bersyarat atau non bersyarat adalah leader Sembarang statement tepat mengikuti statement goto (bersyarat atau tidak) merupakan leader Untuk masing-masing leader, blok dasarnya memuat leader itu sendiri dan semua statement sampai (tapi tak termasuk) leader berikutnya atau akhir program

Contoh proses partisi ke blok (1) Prod :=0 /* leader B1 */ (2) I:=1 (3) T1:=4*i /* leader B2 */ (4) T2:=a[t1 ] /* hitung a[I] */ (5) T3:=4*i (6) T4:=b[t3 ] /* hitung b[I] */ (7) T5:=t2 * t4 (8) T6:= prod + t5 (9) Prod := t6 (10) T7 := I +1 (11) I:=t7 (12) If I <= 20 goto (3) /* Source Code */ Begin prod := 0; I:= 1; do begin prod := prod + a[I]*b[j]; I := I+1; end while I <= 20 End Gambar 9.9 menampilkan flow graph program ini.

Transformasi dalam blok Dasar Transformasi ini tidak merubah struktur Common sub expression elimination Dead code elimination Renaming of temporary variables Interchange of two independent adjacent statements Transformasi ini sering dipakai utk optimisasi

Optimisasi Kode Machine Independent Dilakukan dengan memakai transformasi (lokal dan global terhadap blok) pada kodenya. Sifat transformasi: Tidak merubah arti program Mempercepat jalannya program Harus ada manfaat / hasilnya Optimisasi dapat dilakukan oleh user dan compiler

Optimisasi Kode Data-flow analysis: proses pengumpulan informasi tentang cara bagaimana variabel-variabel dipakai dalam program.

Optimisasi Kode Keuntungan struktur di atas: 1. Operasi yang dibutuhkan untuk mengimplementasikan konstrak tingkat tinggi dibuat eksplisit oleh kode intermediate, sehingga memungkinkan dilakukan optimisasi. Contoh: penghitungan address a[i] diberikan secara eksplisit pada gambar 10.4 berikut sehingga 4 * i dapat dihapus.

Statement tiga alamat diberikan pada Gambar 10.4

Gambar 10.4 Blok dasar dari statement ini pada Gambar 10.5

Gambar 10.5

Optimisasi Kode Keuntungan struktur di atas: Kode intermediate dapat tidak bergantung pada mesin sasaran, sehingga pengoptimasi tidak perlu diubah banyak jika dipakai mesin yang lain.

Optimisasi Kode Beberapa transformasi untuk optimisasi: Penghapusan instruksi yang berlebihan (redundant-instruction elimination), juga instruksi yang tidak tercapai (dead code). Optimisasi flow-of-control. Penyederhanaan aljabar. Pemakaian idiom mesin. (1 s/d 4  optimisasi peephole Penghapusan sub ekspresi yang sama. Rambatan copy (copy propagation). Penghapusan kode-mati (dead-code elimination) Optimisasi loop: - Pemindahan kode (code motion) - Variabel induksi - reduction in strength

Optimisasi Kode (1) MOV R0, a (2) MOV a, R0 (2) harus dihapus, karena (1) sudah memastikan bahwa nilai dari a sudah ada di R0. (2) tidak dapat dihapus kalau mengandung label. #define debug 0 ….. if(debug) { print debugging information /* tidak dapat dicapai kalau debug masih 0 */ }

Optimisasi Kode Ubah goto L1 goto L2 … menjadi … L1: goto L2 L1: goto L2 Jika tidak ada lompatan ke L1, statement L1: goto L2 dapat dihapus. if a < b goto L1 if a < goto L2

Optimisasi Kode Ubah goto L1(*) if a < b goto L2(**) … menjadi goto L3 L1: if a < b goto L2 … L3: L3: (*) dan (**) punya jumlah instruksi yang sama, tetapi pada (*) goto L1 selalu dieksekusi, sedangkan pada (**), goto L3 tidak selalu dieksekusi.

Optimisasi Kode 4. Statement berikut tidak perlu dieksekusi x := x + 0 5. INC, x untuk x := x + 1 DEC, x untuk x := x – 1 Untuk contoh 6 – 9 mengacu pada gambar 10.6, 10.7, 10.9, 10.10.

Optimisasi Kode 6. Penghapusan subekspresi sama secara lokal pada gambar 10.6, dan secara global pada gambar 10.7 Gambar 10.6

Optimisasi Kode 7. Rambatan copy Ada statement f := g, g dipakai sebagai pengganti f. Contoh: Rambatan copy dilakukan pada B5 gambar 10.7 yang menghasilkan: x := t3 a[t7] := t5 a[t10] := t3 goto B2

Gambar 10.7

Optimisasi Kode 8. Penghapusan kode mati, pada contoh 6: x := t3 dapat dihapus karena tidak dipakai lagi, maka dihasilkan: a[t7] := t5 a[t10] := t3 goto B2 9. Pemindahan kode (code motion) while(i <= limit –2) tidak bergantung pada loop while bisa diubah menjadi t := limit – 2; while(i <= t)

Reduction strength pada Gambar 10.9

Gambar 10.10