Perbezaan Utama – Bergantung kepada Mesin lwn Pengoptimuman Kod Bebas Mesin
Atur cara komputer ialah set arahan yang diberikan kepada perkakasan, untuk melaksanakan tugas. Program ini kebanyakannya ditulis dalam bahasa peringkat tinggi, dan komputer tidak memahami bahasa itu. Oleh itu, pengkompil digunakan untuk menukar arahan tersebut kepada kod mesin atau kod sasaran. Ia melalui beberapa fasa untuk membina kod sasaran. Pengoptimuman kod adalah salah satu daripadanya. Terdapat dua teknik pengoptimuman seperti, bergantung kepada mesin dan pengoptimuman kod bebas mesin. Perbezaan utama antara bergantung kepada mesin dan pengoptimuman kod bebas mesin ialah pengoptimuman bergantung kepada mesin digunakan pada kod objek manakala pengoptimuman kod bebas mesin digunakan pada kod perantaraan.
Apakah itu Pengoptimuman Kod Bergantung kepada Mesin?
Apabila menukar kod sumber kepada kod objek atau kod sasaran, pengkompil melalui beberapa fasa. Pertama, kod sumber diberikan kepada penganalisis Leksikal yang menghasilkan token. Kemudian, output diberikan kepada penganalisis sintaks yang menyiasat sama ada token yang dijana berada dalam susunan logik. Output itu diberikan kepada penganalisis semantik. Andaikan terdapat sekeping kod sebagai p=q + r;
Di sini, p, q ialah integer, tetapi r ialah apungan. Menggunakan penganalisis semantik, pembolehubah integer c ditukar kepada apungan. Oleh itu, ia melakukan analisis semantik. Output penganalisis semantik pergi ke penjana kod Perantaraan. Ia mengembalikan kod perantaraan yang kemudiannya pergi ke pengoptimum kod. Pengoptimuman kod ialah proses menghapuskan kenyataan program yang tidak penting tanpa mengubah maksud kod sumber sebenar. Ia bukan pengoptimuman wajib tetapi, ia boleh meningkatkan masa berjalan kod sasaran. Output pengoptimum kod diberikan kepada penjana kod, dan akhirnya, kod sasaran dibina.
Rajah 01: Fasa Penyusun
Dalam pengoptimuman kod bergantung kepada mesin, pengoptimuman digunakan pada kod sumber. Memperuntukkan jumlah sumber yang mencukupi boleh meningkatkan pelaksanaan program dalam pengoptimuman ini.
Apakah itu Pengoptimuman Kod Bebas Mesin?
Apabila pengoptimuman dilakukan pada kod perantaraan, ia dipanggil pengoptimuman kod bebas mesin. Terdapat teknik yang berbeza untuk mencapai pengoptimuman kod bebas mesin. Mereka diterangkan menggunakan contoh berikut.
Baca baris kod di bawah.
untuk (j=0; j<10; j ++) {
b=x+2;
a[j]=5 j;
}
Mengikut kod di atas, b=x+2 dikira berulang kali dalam setiap lelaran. Setelah b dikira, ia tidak berubah. Jadi, garisan ini boleh diletakkan di luar gelung seperti berikut.
b=x+2;
untuk (j=0; j< 10; j++)
{a[j]=5j;
}
Ini dipanggil pergerakan kod.
Baca baris kod di bawah.
j=5;
jika (j==10) {
a=b+20;
}
Mengikut kod di atas, ‘jika blok’ tidak akan dilaksanakan kerana nilai j tidak akan sama dengan 10. Ia sudah dimulakan kepada nilai 5. Oleh itu, blok if ini boleh dialih keluar. Teknik ini adalah penyingkiran kod mati.
Kaedah lain ialah pengurangan kekuatan. Operasi aritmetik seperti pendaraban memerlukan lebih banyak memori, masa dan kitaran CPU. Ungkapan mahal ini boleh digantikan dengan ungkapan murah seperti b=a2; atau boleh digantikan dengan penambahan, b=a + a;
Rujuk kod di bawah.
untuk (j=1; j <=5; j ++) {
nilai=j5;
}
Daripada pendaraban, kod boleh ditukar seperti berikut.
int temp=5;
untuk (j=1; j<=5; j++) {
temp=suhu + 5;
nilai=suhu;
}
Ia adalah mungkin untuk menilai ungkapan yang merupakan pemalar pada masa jalan. Ia dipanggil lipatan berterusan. Terdapat boleh dinyatakan seperti b[j+1]=c [j+1];
Sebaliknya, ia boleh diubah seperti berikut.
n=j +1;
b[n]=c[n];
Boleh terdapat gelung seperti berikut.
untuk (j=0; j<5; j++) {
printf(“a\n”);
}
untuk (j=0; j <5; j++) {
printf(“b\n”);
}
Mencetak a dan b, kedua-duanya mempunyai bilangan lelaran yang sama. Kedua-duanya boleh digabungkan menjadi satu untuk gelung seperti berikut.
untuk (j=0; j <5; j++) {
printf(“a \n”);
printf(“b\n”);
}
Satu lagi teknik penting ialah penyingkiran sub ungkapan biasa. Ia adalah untuk menggantikan ungkapan yang sama dengan pembolehubah tunggal untuk melakukan pengiraan. Rujuk kod di bawah.
a=bc + k;
d=b c + m;
Kod ini boleh ditukar seperti berikut.
temp=bc;
a=temp + k;
d=suhu + m;
Ia tidak diperlukan untuk mengira bc berulang kali. Nilai yang didarab boleh disimpan dalam pembolehubah dan digunakan semula.
Apakah Persamaan Antara Bergantung kepada Mesin dan Pengoptimuman Kod Bebas Mesin?
Kedua-dua ini tergolong dalam Pengoptimuman kod
Apakah Perbezaan Antara Bergantung kepada Mesin dan Pengoptimuman Kod Bebas Mesin?
Bergantung kepada Mesin lwn Pengoptimuman Kod Bebas Mesin |
|
Pengoptimuman kod bergantung kepada mesin digunakan pada kod objek. | Pengoptimuman kod bebas mesin digunakan pada kod perantaraan. |
Penglibatan dengan Perkakasan | |
Pengoptimuman bergantung kepada mesin melibatkan daftar CPU dan rujukan memori mutlak. | Pengoptimuman kod bebas mesin tidak melibatkan daftar CPU atau rujukan memori mutlak. |
Ringkasan – Bergantung kepada Mesin lwn Pengoptimuman Kod Bebas Mesin
Pengoptimuman kod terdiri daripada dua teknik pengoptimuman iaitu, bergantung kepada mesin dan pengoptimuman kod bebas mesin. Perbezaan antara pengoptimuman kod bergantung kepada mesin dan kod bebas mesin ialah pengoptimuman bergantung kepada mesin digunakan pada kod objek manakala, pengoptimuman kod bebas mesin digunakan pada kod perantaraan.
Muat turun Versi PDF Machine Dependent vs Machine Independent Code Optimization
Anda boleh memuat turun versi PDF artikel ini dan menggunakannya untuk tujuan luar talian seperti dalam nota petikan. Sila muat turun versi PDF di sini Perbezaan Antara Bergantung kepada Mesin dan Pengoptimuman Kod Bebas Mesin