Pengertian Teknik Optimasi

                                Teknik optimasi
  
    Teknik optimasi kode program
    Tujuan: menghasilkan kode program yang berukuran lebih kecil dan lebih cepat pada saat dieksekusi.

  Berdasarkan sifat ketergantungan dengan mesin maka optimasi dibagi menjadi dua:
      a. Machine Dependent Optimizer
      b. Machine Independent Optimizer
  Machine Dependent Optimizer
  Kode program dioptimasi agar lebih efisien saat dieksekusi untuk mesin tertentu. Proses optimasi memerlukan informasi feature yang ada pada mesin tujuan. Machine Independent Optimizer Kode program dioptimasi agar lebih efisien saat dieksekusi untuk lebih dari satu mesin tertentu. Machine Independent Optimizer terdiri dari dua jenis: optimasi lokal dan optimasi global Berdasarkan pengembangan program
            a. Penulisan baris program (source code)
            b. Waktu kompilasi oleh kompiler

        Berdasarkan letak atau posisi baris program (source code) di dalam file program, maka optimasi dibagi menjadi dua:
            a. Optimasi lokal
            b. Optimasi global
  1. Optimasi lokal
         Optimasi yang dilakukan pada suatu blok source code, dengan cara:
    1. Folding
    2. Redundant-Subexpression Elimination
   3. Optimasi dalam sebuah iterasi
   4. Strength Reduction
  
1. Folding
     mengganti konstanta atau ekspresi yang bisa dievaluasi pada saat compile time dengan nilai komputasinya.
        Contoh:
    angsuran:= rp_bulan + bunga + 10000 + 6000;
   dapat dioptimasi menjadi:
       angsuran:= rp_bulan + bunga + 16000;
   Catatan:
   1. pertimbangkan untuk mengganti penulisan nilai secara langsung dengan mengisikan nilai tersebut ke dalam   sebuah variabel, untuk alasan kemudahan perawatan program.
   2. Redundant-Subexpression Elimination
        sebuah ekspresi yang sudah dihitung dapat digunakan kembali, sehingga tidak perlu menghitungnya kembali.
    Contoh:
  cicilan:= rp_bulan + bunga;
  biaya_adm:= 10000 + 6000;
  angsuran:= rp_bulan + bunga + 10000 + 6000;
  Dapat dioptimasi menjadi:

  2 cicilan:= rp_bulan + bunga;
  biaya_adm:= 10000 + 6000;
  angsuran:= cicilan + biaya_adm;
         Catatan:
    1. Optimasi di atas dapat dilakukan jika tidak terjadi perubahan nilai ekspresi atau variabel yang bersangkutan.
    2. Pertimbangkan untuk memindahkan penulisan ekspresi atau nilai variabel di awal blok program, untuk alasan kemudahan perawatan program.