Gazle (Pengoptimal)
Gazle adalah pengoptimal bawaan yang disertakan dengan LightVM untuk melakukan pengoptimalan sebelum bytecode Anda dieksekusi melalui metode adaptive multi-pass optimization untuk memastikan kinerja maksimum, meminimalkan footprint, serta menjamin keamanan eksekusi. Setiap proses pengoptimalan dibatasi dengan anggaran waktu 200 milidetik untuk mencegah overhead optimasi yang berlebihan.
Cara Kerja Gazle
Gazle menggunakan alur transformasi khusus yang didukung oleh mekanisme Time-Budgeted Optimization untuk menyempurnakan bytecode Anda secara aman. Ia memproses aliran instruksi melalui beberapa tahapan dinamis yang diatur berdasarkan bobot keberhasilan (pass_weights), secara sistematis mengidentifikasi, memberi reward pada pass yang efektif, dan menghilangkan ketidakefisienan sebelum runtime VM dimulai.
- Instruksi Terspesialisasi: Gazle mengoptimalkan penggunaan memori dan kecepatan eksekusi dengan mengubah instruksi
pushyang generik menjadi pasangan yang spesifik menurut tipenya (contohnya:push_int16,push_string,push_bool). Hal ini memungkinkan VM untuk memproses data dengan ukuran dan tipe yang sudah ditentukan sebelumnya, sehingga secara signifikan mengurangi overhead untuk pengecekan tipe dan alokasi saat runtime. - Pelipatan Konstanta: Melakukan pra-hitung operasi matematika dan logika (misalnya,
add,sub,xor,concat) jika nilainya diketahui pada saat kompilasi. - Konversi & Pelipatan Metadata: Melakukan pra-evaluasi konversi tipe (misalnya,
to_integer,to_string) dan pemeriksaan metadata sepertitype_ofuntuk menghilangkan pekerjaan runtime yang berlebihan. - Pengurangan Kekuatan: Menggantikan operasi "berat" dengan operasi yang lebih ringan, seperti mengubah perkalian dengan pangkat dua menjadi
shl(Shift Left) bitwise. - Penghapusan Penyimpanan yang Tidak Berguna: Menganalisis penggunaan variabel dan secara otomatis menghapus operasi
push,set, atauincyang tidak berkontribusi pada keadaan program akhir. - Penghapusan Loop Mati: Mengidentifikasi dan memangkas loop "murni" yang tidak memiliki efek samping (tidak ada I/O, panggilan, atau pengembalian), sehingga mencegah siklus CPU yang tidak perlu.
- Penghapusan Pemuatan Berlebihan: Mendeteksi upaya berulang untuk memuat nilai atau variabel identik ke dalam tumpukan dan mengganti operasi yang berlebihan dengan instruksi
dupberkinerja tinggi untuk meminimalkan - Optimasi Lompatan: Mendeteksi dan menghapus instruksi Lompatan yang berlebihan yang mengarah ke baris kode berikutnya.
- Lompatan Threading: Mengoptimalkan alur kontrol dengan meruntuhkan rantai pengalihan, di mana sebuah lompatan mengarah langsung ke lompatan lain, memastikan penunjuk instruksi melewati lompatan perantara untuk mencapai tujuan.
- Perambatan Konstan: Mengoptimalkan bytecode dengan melacak penugasan variabel dan mengganti operasi
getdengan instruksipushlangsung ketika nilainya berupa konstanta yang diketahui. Sistem ini memeriksa frekuensi penggunaan dan menghindari penyisipan (inlining) objek berat seperti array atau objek, serta membersihkan status di seluruh lompatan alur kontrol untuk memastikan penyisipan yang aman dan efisien.
INFO
Anda dapat menemukan cara menggunakan Gazle di halaman Metode Optimize Bytecode.