Perbedaan Kunci – Pengoptimalan Kode Independen Mesin vs Ketergantungan Mesin
Program komputer adalah kumpulan instruksi yang diberikan ke perangkat keras, untuk melakukan tugas. Program-program ini sebagian besar ditulis dalam bahasa tingkat tinggi, dan komputer tidak mengerti bahasa itu. Oleh karena itu, kompiler digunakan untuk mengubah instruksi tersebut menjadi kode mesin atau kode target. Ini melewati beberapa fase untuk membangun kode target. Pengoptimalan kode adalah salah satunya. Ada dua teknik pengoptimalan seperti, pengoptimalan kode yang bergantung pada mesin dan pengoptimalan kode yang tidak bergantung pada mesin. Perbedaan utama antara pengoptimalan kode yang bergantung pada mesin dan pengoptimalan yang tidak bergantung pada mesin adalah bahwa pengoptimalan yang bergantung pada mesin diterapkan pada kode objek sementara pengoptimalan kode yang tidak bergantung pada mesin diterapkan pada kode perantara.
Apa itu Optimasi Kode Bergantung Mesin?
Saat mengonversi kode sumber ke kode objek atau kode target, kompiler melewati beberapa fase. Pertama, kode sumber diberikan kepada penganalisis Lexical yang menghasilkan token. Kemudian, output diberikan ke penganalisa sintaks yang menyelidiki apakah token yang dihasilkan berada dalam urutan logis. Output itu diberikan ke penganalisa semantik. Asumsikan ada potongan kode p=q + r;
Di sini, p, q adalah bilangan bulat, tetapi r adalah float. Menggunakan penganalisis semantik, variabel integer c diubah menjadi float. Oleh karena itu, ia melakukan analisis semantik. Output dari penganalisa semantik menuju ke generator kode Menengah. Ini mengembalikan kode perantara yang kemudian masuk ke pengoptimal kode. Optimalisasi kode adalah proses menghilangkan pernyataan program yang tidak penting tanpa mengubah arti dari kode sumber yang sebenarnya. Ini bukan pengoptimalan wajib tetapi, ini dapat meningkatkan waktu berjalan dari kode target. Keluaran dari pengoptimal kode diberikan ke pembuat kode, dan akhirnya, kode target dibuat.
Gambar 01: Tahapan Kompilator
Dalam pengoptimalan kode yang bergantung pada mesin, pengoptimalan diterapkan ke kode sumber. Mengalokasikan sumber daya yang cukup dapat meningkatkan pelaksanaan program dalam optimasi ini.
Apa itu Optimasi Kode Independen Mesin?
Ketika pengoptimalan dilakukan pada kode perantara, ini disebut pengoptimalan kode independen mesin. Ada berbagai teknik untuk mencapai pengoptimalan kode independen mesin. Mereka dijelaskan menggunakan contoh berikut.
Baca baris kode di bawah ini.
untuk (j=0; j<10; j ++) {
b=x+2;
a[j]=5 j;
}
Menurut kode di atas, b=x+2 dihitung berulang kali pada setiap iterasi. Setelah b dihitung, itu tidak berubah. Jadi, baris ini dapat ditempatkan di luar loop sebagai berikut.
b=x+2;
untuk (j=0; j< 10; j++)
{a[j]=5j;
}
Ini disebut gerakan kode.
Baca baris kode di bawah ini.
j=5;
jika (j==10) {
a=b+20;
}
Menurut kode di atas, 'if block' tidak akan pernah dieksekusi karena nilai j tidak akan pernah sama dengan 10. Ini sudah diinisialisasi ke nilai 5. Oleh karena itu, blok if ini dapat dihapus. Teknik ini adalah eliminasi kode mati.
Metode lain adalah pengurangan kekuatan. Operasi aritmatika seperti perkalian membutuhkan lebih banyak memori, waktu, dan siklus CPU. Ekspresi mahal ini dapat diganti dengan ekspresi murah seperti b=a2; atau bisa diganti dengan penjumlahan, b=a + a;
Lihat kode di bawah ini.
untuk (j=1; j <=5; j ++) {
nilai=j5;
}
Alih-alih perkalian, kode dapat diubah sebagai berikut.
int temp=5;
untuk (j=1; j<=5; j++) {
temp=suhu + 5;
nilai=suhu;
}
Dimungkinkan untuk mengevaluasi ekspresi yang merupakan konstanta saat runtime. Ini disebut lipatan konstan. Ada dapat dinyatakan seperti b[j+1]=c [j+1];
Sebaliknya, dapat diubah sebagai berikut.
n=j +1;
b[n]=c[n];
Ada loop seperti berikut.
untuk (j=0; j<5; j++) {
printf(“a\n”);
}
untuk (j=0; j <5; j++) {
printf(“b\n”);
}
Mencetak a dan b, keduanya memiliki jumlah iterasi yang sama. Keduanya dapat digabungkan menjadi satu for loop sebagai berikut.
untuk (j=0; j <5; j++) {
printf(“a \n”);
printf(“b\n”);
}
Teknik penting lainnya adalah eliminasi sub ekspresi umum. Ini adalah untuk mengganti ekspresi identik dengan variabel tunggal untuk melakukan perhitungan. Lihat kode di bawah ini.
a=bc + k;
d=b c + m;
Kode ini dapat diubah sebagai berikut.
temp=bc;
a=suhu + k;
d=suhu + m;
Tidak perlu menghitung bc berulang kali. Nilai yang dikalikan dapat disimpan dalam variabel dan digunakan kembali.
Apa Persamaan Antara Machine Dependent dan Machine Independent Code Optimization?
Keduanya milik Optimasi kode
Apa Perbedaan Antara Machine Dependent dan Machine Independent Code Optimization?
Pengoptimalan Kode Independen Mesin vs Ketergantungan Mesin |
|
Optimasi kode yang bergantung pada mesin diterapkan pada kode objek. | Optimasi kode yang tidak bergantung pada mesin diterapkan pada kode perantara. |
Keterlibatan dengan Perangkat Keras | |
Optimasi yang bergantung pada mesin melibatkan register CPU dan referensi memori absolut. | Optimasi kode independen mesin tidak melibatkan register CPU atau referensi memori absolut. |
Ringkasan – Pengoptimalan Kode Independen Mesin vs Ketergantungan Mesin
Optimasi kode terdiri dari dua teknik pengoptimalan yaitu, pengoptimalan kode yang bergantung pada mesin dan pengoptimalan kode yang tidak bergantung pada mesin. Perbedaan antara pengoptimalan kode yang bergantung pada mesin dan mesin yang tidak bergantung pada mesin adalah bahwa pengoptimalan yang bergantung pada mesin diterapkan pada kode objek sedangkan, pengoptimalan kode yang tidak bergantung pada mesin diterapkan pada kode perantara.
Unduh Versi PDF dari Machine Dependent vs Machine Independent Code Optimization
Anda dapat mengunduh versi PDF dari artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi PDF di sini Perbedaan Antara Pengoptimalan Kode Ketergantungan Mesin dan Independen Mesin