Differenza Tra Ottimizzazione Del Codice Dipendente Dalla Macchina E Indipendente Dalla Macchina

Sommario:

Differenza Tra Ottimizzazione Del Codice Dipendente Dalla Macchina E Indipendente Dalla Macchina
Differenza Tra Ottimizzazione Del Codice Dipendente Dalla Macchina E Indipendente Dalla Macchina

Video: Differenza Tra Ottimizzazione Del Codice Dipendente Dalla Macchina E Indipendente Dalla Macchina

Video: Differenza Tra Ottimizzazione Del Codice Dipendente Dalla Macchina E Indipendente Dalla Macchina
Video: I consigli di Lavoropiù 2024, Novembre
Anonim

Differenza chiave: ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

I programmi per computer sono serie di istruzioni fornite all'hardware per eseguire attività. Questi programmi sono scritti principalmente in linguaggi di alto livello e il computer non capisce quella lingua. Pertanto, viene utilizzato un compilatore per convertire quelle istruzioni in codice macchina o codice di destinazione. Passa attraverso diverse fasi per creare il codice di destinazione. L'ottimizzazione del codice è uno di questi. Esistono due tecniche di ottimizzazione come l'ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina. La differenza fondamentale tra l'ottimizzazione del codice dipendente dalla macchina e quella indipendente dalla macchina è che l'ottimizzazione dipendente dalla macchina viene applicata al codice oggetto mentre l'ottimizzazione del codice indipendente dalla macchina viene applicata al codice intermedio.

CONTENUTI

1. Panoramica e differenze chiave

2. Che cos'è l'ottimizzazione del codice dipendente dalla macchina

3. Che cos'è l'ottimizzazione del codice indipendente dalla macchina

4. Somiglianze tra ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

5. Confronto affiancato - Ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina in forma tabulare

6. Riepilogo

Che cos'è l'ottimizzazione del codice dipendente dalla macchina?

Quando si converte il codice sorgente in codice oggetto o codice di destinazione, il compilatore passa attraverso diverse fasi. Innanzitutto, il codice sorgente viene fornito all'analizzatore lessicale che produce i token. Quindi, l'output viene fornito all'analizzatore di sintassi che verifica se i token generati sono in ordine logico. Tale output viene fornito all'analizzatore semantico. Supponiamo che ci sia un pezzo di codice come p = q + r;

Qui, p, q sono numeri interi, ma r è un float. Utilizzando l'analizzatore semantico, la variabile intera c viene convertita in un float. Pertanto, esegue l'analisi semantica. L'output dell'analizzatore semantico va al generatore di codice intermedio. Restituisce un codice intermedio che poi va all'ottimizzatore del codice. L'ottimizzazione del codice è il processo di eliminazione delle istruzioni del programma non essenziali senza modificare il significato del codice sorgente effettivo. Non è un'ottimizzazione obbligatoria ma può migliorare il tempo di esecuzione del codice di destinazione. L'output dell'ottimizzatore del codice viene fornito al generatore di codice e, infine, viene creato il codice di destinazione.

Differenza tra ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina
Differenza tra ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

Figura 01: fasi del compilatore

Nell'ottimizzazione del codice dipendente dalla macchina, l'ottimizzazione viene applicata al codice sorgente. L'assegnazione di una quantità sufficiente di risorse può migliorare l'esecuzione del programma in questa ottimizzazione.

Che cos'è l'ottimizzazione del codice indipendente dalla macchina?

Quando l'ottimizzazione viene eseguita sul codice intermedio, viene chiamata ottimizzazione del codice indipendente dalla macchina. Esistono diverse tecniche per ottenere l'ottimizzazione del codice indipendente dalla macchina. Sono descritti utilizzando i seguenti esempi.

Leggi le seguenti righe di codice.

for (j = 0; j <10; j ++) {

b = x + 2;

a [j] = 5 * j;

}

Secondo il codice sopra, b = x + 2 viene calcolato ancora e ancora in ogni iterazione. Una volta che b è calcolato, non cambia. Quindi, questa linea può essere posizionata all'esterno del ciclo come segue.

b = x + 2;

per (j = 0; j <10; j ++)

{a [j] = 5 * j;

}

Questo si chiama movimento del codice.

Leggi le seguenti righe di codice.

j = 5;

if (j == 10) {

a = b + 20;

}

Secondo il codice precedente, 'if block' non verrà mai eseguito perché il valore j non sarà mai uguale a 10. È già inizializzato al valore 5. Pertanto, questo blocco if può essere rimosso. Questa tecnica è l'eliminazione del codice morto.

Un altro metodo è la riduzione della forza. Le operazioni aritmetiche come la moltiplicazione richiedono più memoria, tempo e cicli della CPU. Queste espressioni costose possono essere sostituite da espressioni economiche come b = a * 2; oppure può essere sostituito da addizione, b = a + a;

Fare riferimento al codice seguente.

for (j = 1; j <= 5; j ++) {

valore = j * 5;

}

Invece della moltiplicazione, il codice può essere modificato come segue.

int temp = 5;

for (j = 1; j <= 5; j ++) {

temp = temp + 5;

valore = temp;

}

È possibile valutare le espressioni che sono costanti in fase di esecuzione. Si chiama piegatura costante. Si può affermare come b [j + 1] = c [j + 1];

Invece, può essere modificato come segue.

n = j +1;

b [n] = c [n];

Possono esserci loop come segue.

for (j = 0; j <5; j ++) {

printf ("a / n");

}

for (j = 0; j <5; j ++) {

printf ("b / n");

}

Stampando aeb, entrambi hanno lo stesso numero di iterazioni. Entrambi possono essere combinati in un ciclo for come segue.

for (j = 0; j <5; j ++) {

printf ("a / n");

printf ("b / n");

}

Un'altra tecnica importante è l'eliminazione della sottoespressione comune. È sostituire le espressioni identiche con una singola variabile per eseguire il calcolo. Fare riferimento al seguente codice.

a = b * c + k;

d = b * c + m;

Questo codice può essere convertito come segue.

temp = b * c;

a = temp + k;

d = temp + m;

Non è necessario calcolare b * c ripetutamente. Il valore moltiplicato può essere memorizzato in una variabile e riutilizzato.

Qual è la somiglianza tra l'ottimizzazione del codice dipendente dalla macchina e quella indipendente dalla macchina?

Entrambi appartengono all'ottimizzazione del codice

Qual è la differenza tra l'ottimizzazione del codice dipendente dalla macchina e quella indipendente dalla macchina?

Articolo diff. Al centro prima della tabella

Ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

L'ottimizzazione del codice dipendente dalla macchina viene applicata al codice oggetto. L'ottimizzazione del codice indipendente dalla macchina viene applicata al codice intermedio.
Coinvolgimento con l'hardware
L'ottimizzazione dipendente dalla macchina coinvolge registri CPU e riferimenti di memoria assoluti. L'ottimizzazione del codice indipendente dalla macchina non coinvolge i registri della CPU o i riferimenti di memoria assoluti.

Riepilogo: ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

L'ottimizzazione del codice consiste in due tecniche di ottimizzazione, ovvero l'ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina. La differenza tra l'ottimizzazione del codice dipendente dalla macchina e quella indipendente dalla macchina è che l'ottimizzazione dipendente dalla macchina viene applicata al codice oggetto, mentre l'ottimizzazione del codice indipendente dalla macchina viene applicata al codice intermedio.

Scarica la versione PDF dell'ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

È possibile scaricare la versione PDF di questo articolo e utilizzarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui Differenza tra ottimizzazione del codice dipendente dalla macchina e indipendente dalla macchina

Raccomandato: