Anda di halaman 1dari 2

Loop optimization

Biasanya sebagian besar pekerjaan sebuah program dilakukan dalam satu atau dua loop kecil
yang berulang-ulang kali berulang kali. Optimalisasi tingkat tinggi berikut ditargetkan secara
spesifik pada loop karena banyaknya pekerjaan yang mereka lakukan. Dalam kode matematis
situasi yang di sebutkan di atas dimana sebagian besar pekerjaan dilakukan melalui loop,
hampir universal, karena alasan ini optimasi loop adalah yang paling penting. Kompiler untuk
superkomputer menghabiskan sebagian besar waktu dalam melakukan pengoptimalan loop.
Loop sering mengakses array dan banyak pengoptimalan loop bergantung pada fakta ini.
Programmer mengetahui pentingnya loop dan hanya memperhatikan kode mereka saat
mengevaluasi algoritma.

Loop invariant hoisting


Operasi dalam loop dilakukan berkali-kali lebih banyak daripada yang berada di luar loop,
jadi lebih baik melakukan sebanyak mungkin di luar lingkaran. Loop invariant hoisting
memindahkan perhitungan loop invarian keluar dari loop.

Optimasi dalam sebuah iterasi


Loop Unrolling : menggantikan suatu loop dengan menulis statement dalam loop beberapa
kali.

Contoh instruksi :
FOR I:=1 to 2 DO
A[I]:=0;
dioptimasi menjadi
A[1] := 0;
A[2] := 0;

Pada instruksi pertama yang menggunakan iterasi perlu dilakukan inisialisasi setiap eksekusi
loop, pengetesan, adjustment, dan operasi pada tubuh perulangan. Yang kesemuanya itu
menghasilkan banyak instruksi. Karena itu dengan optimasi hanya
memerlukan dua instruksi assignment.

Frequency Reduction : memindahkan statement ke tempat yang lebih jarang dieksekusi.

Contoh instruksi :
FOR I:=1 TO 10 DO BEGIN
X:=5; A:=A+1;
END;
variabel X dapat dikeluarkan dari iterasi, menjadi :
X:=5;
FOR I:=1 TO 10 DO BEGIN
A:=A+1 END;

https://www.tutorialspoint.com/compiler_design/compiler_design_code_optimiza tion.htm
https://www.vssut.ac.in/lecture_notes/lecture1422914957.pdf
http://www.realworldtech.com/compiler-optimization/

Anda mungkin juga menyukai