PENGANTAR
TEKNIK OPTIMASI
BAB
I
PENDAHULUAN
1.1 Latar Belakang
Kalimat optimasi sifatnya termasuk global,
karena banyak digunakan sebagai kata kunci paling populer, oleh karena itu saya
akan menjelaskan apa itu optimasi yang sepertinya masih banyak yang bingung.
Optimasi secara umum adalah untuk memaksimalkan atau mengoptimalkan sesuatu hal
yang bertujuan untuk mengelola sesuatu yang dikerjakan, sehingga optimasi bisa
dikatakan kata benda yang berasal dari kata kerja, dan optimasi bisa dianggap
baik sebagai ilmu pengetahuan dan seni menurut tujuan yang ingin dimaksimalkan.
Ilmu pengetahuan adalah teknik optimasi, seni adalah
menentukan di mana dan kapan optimasi harus diterapkan. Menurut definisi,
optimasi adalah "proses produksi lebih efisien (lebih kecil dan / atau
lebih cepat) program melalui seleksi dan desain struktur data, algoritma, dan
urutan instruksi dan lain-lainnya. Banyak Fakor yang berkaitan dengan optimasi,
seperti optimasi computer, optimasi Web dan lain-lainnya, sehingga optimasi
memnag diperlukan untuk hal apapun dan optimasi itu artinya membuat sesuatu
sebagus mungkin.atatu paling maksimal. Persoalan optimasi adalah persoalan yang
sangat penting untuk diterapkan untuk segala sistem maupun organisasi. Dengan
optimasi pada sebuah sistem kita akan bisa berhemat dalam segala hal antara
lain energi, keuangan, sumber daya alam, kerja dan lain-lain, tanpa mengurangi
fungsi sistem tersebut. Peranan kalimat optimasi juga banyak diterapkan pada
situs-situs yang berkecipung dalam bidang SEO maupun teknologi lainnya.
1.2.Rumusan
Masalah
Adapun
rumusan permasalahan ini adalah untuk mengetahui ;
1.1.1.1.
Jelaskan pengertian tentang teknik optimasi ?
1.1.1.2.
Jelaskan table informasi pada teknik optimasi ?
1.3.Tujuan
Penulisan
Tujuan
dari penulisan makalah ini adalah :
1.3.1.1.
Untuk mengetahui tentang teknik optimasi
1.3.1.2.
Untuk mengetahui tentang table informasi pada teknik optimasi
1.4.Manfaat Penulisan
Dapat
dimanfaatkan sebagai bahan acuhan dalam penulisan makalah selanjutnya.
BAB
II
KAJIAN
TEORI DAN PEMBAHASAN
1.1 Pengertian
Teknik Optimasi
Pentingnya sebuah kejelasan dalam sebuah karya ilmiah agar tidak
terjadi salah tafsir/persepsi atau pun bermakna ambigu yang berimplikasi
terhadap perubahan makna dan maksud penulis. Ada beberapa hal yang akan penulis
bahas berkenaan dengan isitilah-istilah pengertian kalimat optimasi.
Optimasi
Optimal = paling bagus/tinggi;tertinggi;terbagus;paling
menguntungkan.
Optimal a (ter) baik: tertinggi; paling menguntungkan: dengan kondisi fisik
yang-- kami yakin akan menang dalam pertandingan sore nanti; kita telah bekerja
secara --;
Mengoptimalkan v menjadikan paling baik; menjadikan paling
tinggi;
Pengoptimalan proses cara, perbuatan mengoptimalkan (menjadikan paling baik,
paling tinggi, dsb)
Optimasi berasal dari bahasa inggris optimization (n), kata
benda yang berasal dari kata kerja (v) optimize. Kata kerja optimize berasal
dari kata sifat (adj) optimal. Bentukan kata optimal dengan imbuhan ize akan
membuat al pada optimal dipenggal sehingga hasilnya adalah optimize.
1.1.1
Dependensi Optimasi
Dependensi optimasi
Tahapan optimasi kode bertujuan untuk
menghasilkan kode program yang berukuran lebih kecil dan lebih cepat
eksekusinya. Berdasarkan ketergantungannya pada mesin, optimasi dibagi menjadi
:
1.1.1.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.
1.1.1.2 Machine Independent Optimizer.
Strategi optimasi yang bisa diaplikasikan tanpa tergantung pada mesin tujuan
tempat kode yang dihasilkan akan dieksekusi nantinya. Mesin ini meliputi
optimasi lokal dan optimasi global.
1.1.2
Optimasi Lokal
Optimasi
Lokal adalah optimasi yang dilakukan hanya pada suatu blok dari source code,
cara-caranya sebagai berikut:
1.1.2.1
Folding.
Mengganti konstansta atau ekspresi yang bisa dievaluasi pada saat compile time
dengan nilai komputasinya. Misalkan Instruksi ;
A:=2+3+B
bisa diganti menjadi
A:=5+B
1.1.2.2
Redundant-Subexpression
Elimination. Sebuah ekspresi yang sudah pernah dikomputasi, digunakan lagi
hasilnya, ketimbang melakukan komputasi ulang. Misalkan terdapat urutan
instruksi :
A:=B+C
X:=Y+B+C
kemunculan kedua dari B+C yang redundan bisa diatasi dengan
memanfaatkan hasil komputasinya yang sudah ada pada instruksi sebelumnya.
Perhatikan, hal ini bisa dilakukan dengan catatan belum ada perubahan pada variabel
yang berkaitan.
1.1.2.3
Optimisasi
dalam sebuah iterasi.
1.1.2.3.1
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.1.2.3.2
Inisialisasi/pemberian
nilai awal pada variabel loop. Dilakukan sekali pada saat permulaan eksekusi
loop.
1.1.2.3.3 Pengujian, apakah variabel loop telah
mencapai kondisi terminasi.
1.1.2.3.4 Adjustment yaitu penambahan atau
pengurangan nilai pada variabel loop dengan jumlah tertentu.
1.1.2.3.5 Operasi yang terjadi pada tubuh
perulangan (loop body).
Dalam setiap perulangan akan terjadi
pengujian dan adjusment yang menambah waktu eksekusi. Contoh pada instruksi :
FOR I:=1 to 2 DO
A[I]:=0;
Terdapat instruksi untuk inisialisasi I menjadi 1. serta
operasi penambahan nilai/increment 1 dan pengecekan variabel I pada setiap
perulangan. Sehingga untuk perulangan saja memerlukan lima instruksi, ditambah
dengan instruksi assignment pada tubuh perulangan menjadi tujuh instruksi.
Dapat dioptimasikan menjadi :
A[1]:=0;
A[2]:=0;
yang hanya memerlukan dua instruksi assignment saja. Untuk
menentukan optimasi ini perlu dilihat perbandingan kasusnya dengan tanpa
melakukan optimasi.
1.1.2.3.6
Frequency
Reduction
Frequency reduction: Pemindahan statement ke tempat yang
lebih jarang dieksekusi. Contoh:
FOR I:=1 TO 10 DO
BEGIN
X:=5;
A:=A+I;
END;
kita ,melihat bawa tidak terjadi perubahan /manipulasi pada
variabel X didalam iterasi, karena itu kita bisa mengeluarkan instruksi
tersebut keluar iterasi, menjadi:
X:=5;
FOR I:=1 TO 10 DO
BEGIN
A:=A+I
END;
1.1.2.4
Strength
Reduction. Penggantian suatu operasi dengan jenis operasi lain yang lebih cepat
dieksekusi. Misalkan 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, instruksi :
A:=A+1;
dapat digantikan dengan: INC(A);
1.1.3
Optimasi Global
Optimisasi global biasanya dilakukan
dengan analisis flow, yaitu suatu graf berarah yang menunjukkan jalur yang
mungkin selama dieksekusi program. Kegunaannya adalah sebagai berikut:
1.1.3.1
Bagi
pemrogram menginformasikan :
1.1.3.1.1
Unreachable/dead
code: kode yang tidak akan pernah dieksekusi. Misalnya terdapat urutan
instruksi:
X:=5;
IF X:=0 THEN
A:=A+1
Instruksi A:=A+1 tidak akan pernah dieksekusi
1.1.3.1.2
Unused
parameter pada prosedur: parameter yang tidak akan pernah digunakan didalam
prosedur. Contohnya :
Procedure Jumlah (a,b,c:integer);
var x: integer
begin
x:=a+b
end;
kita lihat parameter c tidak pernah digunakan didalam
prosedur, sehingga seharusnya tidak perlu diikutrestakan.
1.1.3.1.2
Unused
Variable: Variabel yang tidak pernah dipakai dalam program. Contohnya :
Program Pendek;
var a,b:integer;
begin
a:=5;
end;
variabel b tidak pernah digunakan dalam program sehingga bisa
dihilangkan.
1.1.3.1.3
Variabel
yang dipakai tanpa nilai awal. Contohnya:
Program awal;
var a,b: integer;
begin
a:=5;
a:=a+b;
end;
kita lihat variabel b digunakan tanpa memiliki nilai
awal/belum di-assign.
1.1.3.2
Bagi
kompilator:
1.1.3.2.1
Meningkatkan
efisiensi eksekusi program.
1.1.3.2.2
Menghilangkan
useless code/kode yang tidak terpakai.
1.2 Tabel
Optimasi
Fungsi
Tabel Informasi atau Tabel Simbol
·
Membantu pemeriksaan kebenaran semantik
dari program sumber.
·
Membantu dan mempermudah pembuatan intermediate
code dan proses pembangkitan kode.
Untuk mencapai fungsi
tersebut dilakukan dengan menambah dan mengambil atribut variabel yang
dipergunakan pada program dari tabel. Atribut, misalnya nama, tipe, ukuran
variabel.
Tabel Simbol berisi daftar
dan informasi identifier pokok yang terdapat dalam program sumber,
disebut Tabel Pokok / Utama.
Tabel Pokok belum
mengcover semua informasi, untuk itu disediakan tabel lagi sebagai pelengkap
Tabel Pokok.
Untuk mengacu pada tabel
simbol yang bersesuaian dengan suatu indentifier tertentu, maka pada
Tabel Pokok harus disediakan field yang bisa menjembatani identifier dari
Tabel Pokok ke tabel-tabel lain yang bersesuaian. Untuk itu, pemilihan elemen
tabel pada Tabel Pokok maupun tabel lainnya, merupakan sesuatu yang sangat
penting.
1.2.1
Elemen Tabel Informasi
Elemen pada Tabel Simbol bermacam-macam,
tergantung pada jenis bahasanya. Misalnya :
1.2.1
No urut identifier : Menentukan nomor
urut identifier dalam tabel simbol.
1.2.2
Nama identifier : Berisi nama-nama identifier
(nama variabel, nama tipe, nama konstanta, nama procedure, nama fungsi,
dll) yang terdapat pada program sumber. Nama-nama ini akan dijadikan referensi
pada waktu analisa semantik, pembuatan intermediate code, serta pembangkitan
kode.
1.2.3
Tipe identifier : Berisi
keterangan/informasi tipe dari record dan string, maupun procedure dan
function.
1.2.4
Object
time address : address yang mengacu ke alamat tertentu.
1.2.5
Dimensi
dari identifier yang bersangkutan.
1.2.6
Nomor
baris variabel dideklarasikan.
1.2.7
Nomor
baris variabel direferensikan.
1.2.8
Field link.
1.2.2 Implementasi Tabel Informasi
Beberapa jenis :
1.2.2.1 Tabel Identifier :
Berfungsi menampung semua identifier yang terdapat dalam program.
1.2.2.2 Tabel Array :
Berfungsi menampung informasi tambahan untuk sebuah array.
1.2.2.3 Tabel Blok : Mencatat
variabel-variabel yang ada pada blok yang sama.
1.2.2.4 Tabel Real : menyimpan elemen
tabel bernilai real.
1.2.2.5 Tabel String : Menyimpan
informasi string.
1.2.2.6 Tabel Display :
Mencatat blok yang aktif.
1.2.3 Tabel Identifier
Memiliki field :
ü No urut identifier dalam tabel
ü Nama identifier
ü Jenis/obyektif dari identifier : Prosedur,
fungsi, tipe, variabel, konstanta
ü Tipe dari identifier yang
bersangkutan : integer, char, boolean, array, record, file, no-type
ü Level :
Kedalaman identifier tertentu, hal ini menyangkut letak identifier dalam
program. Konsepnya sama dengan pembentukan tree, misal main program =
level 0. Field ini digunakan pada run time untuk mengetahui current
activation record dan variabel yang bisa diakses.
Untuk identifier yang butuh
penyimpanan dicatat pula :
• Alamat relatif/address dari identifier
untuk implementasi
•
Informasi referensi (acuan) tertentu ke alamat tabel lain yang digunakan untuk
mencatat informasi-informasi yang diperlukan yang menerangkannya.
• Link
: Menghubungkan identifier ke identifier lainnya, atau yang
dideklarasikan pada level yang sama.
• Normal : Diperlukan pada pemanggilan parameter, untuk membedakan
parameter by value dan reference (berupa suatu variabel boolean)
Contoh :
Terdapat listing program sebagai berikut :
Program A;
var B : integer;
Procedure X(Z:char);
var C : integer
Begin
…….
Tabel Identifier akan mencatat semua identifier :
0 A
1 B
2 X
3 Z
4 C
Contoh implementasi table identifier :
TabId: array [0..tabmax] of
record
name : string;
link : integer;
obj : objek;
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)
1.2.4 Tabel Array
Memiliki field :
No urut suatu array dalam
tabel
Tipe dari indeks array
yang bersangkutan
Tipe elemen array
Referensi dari elemen array
Indeks batas bawah array
Indeks batas atas array
Jumlah elemen array
Ukuran total array (
total size = (atas-bawah+1) x elemen size)
Elemen size (ukuran tiap elemen)
Tabel Array diacu dengan field referensi pada Tabel Identifier.
Contoh implementasi table array :
TabArray : array [1...tabmax] of
record
indextype, elementype : types;
elemenref, low, high, elemensize, tabsize : integer
end;
1.2.5 Tabel Blok
Memiliki field :
No urut blok
Batas awal blok
Batas akhir blok
Ukuran parameter / parameter size
Ukuran variabel / variabel size
Last variable
Last parameter
Contoh implementasi table blok :
TabBlok: array [1..tabmax] of
record
lastvar, lastpar, parsize, varsize: integer;
end;
Dari contoh listing program berikut :
Program a;
var B: integer;
Procedure X(Z:char);
var C : integer
Begin
…….
Akan diperoleh, untuk blok Program A :
last variable = 2
variable size = 2 (dianggap integer
butuh dua byte)
last parameter = 0 (tanpa parameter)
parameter size = 0
Untuk blok Procedure X :
last variable = 4
variable size = 2
last parameter = 3
parameter size = 1 (dianggap char
butuh satu byte)
1.2.6 Tabel Real
Elemen tabel real :
No urut elemen
Nilai real suatu variabel real yang mengacu
ke indeks tabel ini
Contoh implementasi tabel real :
TabReal : array [1..tabmax] of real
(pemikiran : setiap tipe yang dimiliki oleh
suatu bahasa akan memiliki tabelnya sendiri)
1.2.7 Tabel String
Elemennya :
No urut elemen
Karakter-karakter yang merupakan konstanta
Contoh implementasi tabel string :
TabString: array[1..tabmax] of string
1.2.8 Tabel Display
Elemennya :
No urut tabel
Blok yang aktif
Pengisian tabel display dilakukan dengan
konsep stack.
Urutan pengaksesan : Tabel Display – Tabel
Blok – Tabel Simbol.
Contoh implementasi Tabel Display :
TabDisplay: array [1..tabmax]of integer
1.3 Interaksi Antar
Tabel
Pertama kali tabel display akan
menunjuk blok mana yang sedang aktif. Dari blok yang aktif ini, akan diketahui
identifier-identifier yang termasuk dalam blok tersebut. Untuk pertama kalinya,
yang akan diacu adalah identifier yang paling akhir, kemudian identifier
sebelumnya, dan seterusnya. Informasi suatu identifier ini mungkin belum
lengkap. Untuk itu dari tabel identifier ini mungkin akan dicari kelengkapan
informasi dari suatu identifier ke tabel yang sesuai (tabel real, tabel string,
atau tabel array).
BAB III
PENUTUP
1.1. KESIMPULAN
Optimasi berasal dari bahasa inggris
optimization (n), kata benda yang berasal dari kata kerja (v) optimize. Kata
kerja optimize berasal dari kata sifat (adj) optimal. Bentukan kata optimal
dengan imbuhan ize akan membuat al pada optimal dipenggal sehingga hasilnya
adalah optimize.
Dependensi
optimasi Tahapan
optimasi kode bertujuan untuk menghasilkan kode program yang berukuran lebih
kecil dan lebih cepat eksekusinya. Optimasi Lokal adalah optimasi yang
dilakukan hanya pada suatu blok dari source code.
Optimisasi
global biasanya dilakukan dengan analisis flow, yaitu suatu graf berarah yang
menunjukkan jalur yang mungkin selama dieksekusi program.
Untuk mencapai fungsi
tersebut dilakukan dengan menambah dan mengambil atribut variabel yang
dipergunakan pada program dari tabel. Atribut, misalnya nama, tipe, ukuran
variabel. Tabel Simbol berisi daftar dan informasi identifier pokok yang
terdapat dalam program sumber, disebut Tabel Pokok / Utama. Tabel Pokok belum
mengcover semua informasi, untuk itu disediakan tabel lagi sebagai pelengkap
Tabel Pokok.
1.2. SARAN
Pembicaraan tentang teknik optimasi tidak
bisa dilepaskan dari kehidupan kita sebagai makhluk sosial yang butuh
berkomunikasi dengan orang lain. Oleh karena itu, perlu prinsip-prinsip yang
harus disepakati agar terjalinnya komunikasi yang efektif dan efisien. Lewat
teori-teorinya yang berkaitan dengan teknik optimasi, berusaha memberikan
prinsip-prinsip sistem teknik optimasi.
Dengan memahami dan mengaplikasikan teori-teori
tersebut, diharapkan kita lebih mampu menjalankannya dengan baik di segala
situasi dan kondisi agar tercapai tujuan yang kita inginkan.
1.2.2