Perbedaan Utama - Pengoptimalan Kode Tergantung Mesin vs Mesin Independen
Program komputer adalah sekumpulan instruksi yang diberikan ke perangkat keras, untuk melakukan tugas. Program-program ini kebanyakan ditulis dalam bahasa tingkat tinggi, dan komputer tidak memahami 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. Optimasi kode adalah salah satunya. Ada dua teknik pengoptimalan seperti, pengoptimalan kode tergantung mesin dan mesin independen. Perbedaan utama antara pengoptimalan kode yang bergantung pada mesin dan yang tidak bergantung pada mesin adalah bahwa pengoptimalan yang bergantung pada mesin diterapkan ke kode objek sementara pengoptimalan kode yang tidak tergantung mesin diterapkan pada kode perantara.
ISI
1. Gambaran Umum dan Perbedaan Utama
2. Apa itu Pengoptimalan Kode Ketergantungan Mesin
3. Apa itu Pengoptimalan Kode Independen Mesin
4. Persamaan Antara Ketergantungan Mesin dan Optimasi Kode Independen Mesin
5. Perbandingan Berdampingan - Tergantung Mesin vs Optimasi Kode Independen Mesin dalam Bentuk Tabular
6. Ringkasan
Apa itu Pengoptimalan Kode Tergantung Mesin?
Saat mengubah kode sumber menjadi kode objek atau kode target, kompilator melewati beberapa tahap. Pertama, kode sumber diberikan ke penganalisis Lexical yang menghasilkan token. Kemudian, output diberikan ke penganalisis sintaks yang menyelidiki apakah token yang dihasilkan berada dalam urutan logis. Output tersebut diberikan ke penganalisis semantik. Asumsikan bahwa ada bagian kode sebagai p = q + r;
Di sini, p, q adalah bilangan bulat, tetapi r adalah float. Dengan menggunakan penganalisis semantik, variabel bilangan bulat c diubah menjadi float. Oleh karena itu, ia melakukan analisis semantik. Output dari penganalisis semantik masuk ke generator kode Perantara. Ini mengembalikan kode perantara yang kemudian masuk ke pengoptimal kode. Optimasi kode adalah proses menghilangkan pernyataan program yang tidak penting tanpa mengubah arti kode sumber yang sebenarnya. Ini bukan pengoptimalan wajib tetapi, ini dapat meningkatkan waktu berjalan kode target. Output dari pengoptimal kode diberikan ke pembuat kode, dan akhirnya, kode target dibuat.
Gambar 01: Tahapan Penyusun
Dalam pengoptimalan kode yang bergantung pada mesin, pengoptimalan diterapkan ke kode sumber. Mengalokasikan sumber daya yang cukup dapat meningkatkan pelaksanaan program dalam pengoptimalan ini.
Apa itu Pengoptimalan Kode Mesin Independen?
Ketika pengoptimalan dilakukan pada kode perantara, ini disebut pengoptimalan kode mesin independen. Ada beberapa teknik berbeda untuk mencapai pengoptimalan kode yang tidak tergantung 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 di 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] = 5 * j;
}
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 dijalankan 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 penghapusan kode mati.
Metode lainnya 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 = a * 2; atau bisa diganti dengan penjumlahan, b = a + a;
Lihat kode di bawah ini.
untuk (j = 1; j <= 5; j ++) {
nilai = j * 5;
}
Alih-alih perkalian, kode dapat diubah sebagai berikut.
suhu int = 5;
untuk (j = 1; j <= 5; j ++) {
suhu = suhu + 5;
nilai = suhu;
}
Dimungkinkan untuk mengevaluasi ekspresi yang merupakan konstanta pada waktu proses. Ini disebut lipatan konstan. Bisa dinyatakan seperti b [j + 1] = c [j + 1];
Sebagai gantinya, ini dapat diubah sebagai berikut.
n = j +1;
b [n] = c [n];
Mungkin ada loop sebagai 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 untuk mengganti ekspresi identik dengan variabel tunggal untuk melakukan perhitungan. Lihat kode di bawah ini.
a = b * c + k;
d = b * c + m;
Kode ini dapat diubah sebagai berikut.
suhu = b * c;
a = temp + k;
d = suhu + m;
Tidak perlu menghitung b * c lagi dan lagi. Nilai yang dikalikan dapat disimpan dalam variabel dan digunakan kembali.
Apa Persamaan Antara Ketergantungan Mesin dan Pengoptimalan Kode Independen Mesin?
Keduanya termasuk dalam Pengoptimalan kode
Apa Perbedaan Antara Mesin Tergantung dan Pengoptimalan Kode Mesin Independen?
Artikel Diff Tengah sebelum Tabel
Tergantung Mesin vs Pengoptimalan Kode Independen Mesin |
|
Pengoptimalan kode yang bergantung pada mesin diterapkan ke kode objek. | Pengoptimalan kode yang tidak tergantung mesin diterapkan ke kode perantara. |
Keterlibatan dengan Perangkat Keras | |
Pengoptimalan yang bergantung pada mesin melibatkan register CPU dan referensi memori absolut. | Pengoptimalan kode yang tidak bergantung mesin tidak melibatkan register CPU atau referensi memori absolut. |
Ringkasan - Pengoptimalan Kode Tergantung Mesin vs Mesin Independen
Pengoptimalan kode terdiri dari dua teknik pengoptimalan yaitu pengoptimalan kode yang bergantung pada mesin dan tidak tergantung pada mesin. Perbedaan antara pengoptimalan kode yang bergantung pada mesin dan 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 Pengoptimalan Kode Tergantung Mesin vs Pengoptimalan Mesin Independen
Anda dapat mengunduh versi PDF dari artikel ini dan menggunakannya untuk tujuan offline sesuai catatan kutipan. Silakan unduh versi PDF di sini Perbedaan Antara Ketergantungan Mesin dan Pengoptimalan Kode Independen Mesin