Differenza tra rilegatura statica e dinamica

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 1 Maggio 2024
Anonim
FISICA Teoria #18 - CORPI RIGIDI, MOMENTO di una FORZA, MOMENTO d’INERZIA, DINAMICA ROTAZIONALE
Video: FISICA Teoria #18 - CORPI RIGIDI, MOMENTO di una FORZA, MOMENTO d’INERZIA, DINAMICA ROTAZIONALE

Contenuto


L'associazione vincolante di una "definizione di funzione" a una "chiamata di funzione" o un'associazione di un "valore" a una "variabile", è chiamata "associazione". Durante la compilazione, ad ogni "definizione di funzione" viene assegnato un indirizzo di memoria; non appena viene effettuata la chiamata di funzione, il controllo dell'esecuzione del programma passa a quell'indirizzo di memoria e ottiene il codice della funzione memorizzato in quella posizione, questo è il Binding di "chiamata di funzione" a "definizione di funzione". Il legame può essere classificato come "legame statico" e "legame dinamico".

Se è già noto prima del runtime, quale funzione verrà invocata o quale valore viene assegnato a una variabile, allora si tratta di un "binding statico". se viene a conoscenza in fase di esecuzione, allora si chiama "associazione dinamica".


  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione:

Base per il confrontoRilegatura staticaRilegatura dinamica
Evento EventoGli eventi che si verificano in fase di compilazione sono "Legatura statica".
Gli eventi che si verificano in fase di esecuzione sono "Binding dinamico".
InformazioneTutte le informazioni necessarie per chiamare una funzione sono note al momento della compilazione.Tutte le informazioni necessarie per chiamare una funzione vengono a conoscenza in fase di esecuzione.
VantaggioEfficienza.Flessibilità.
TempoEsecuzione veloce.Esecuzione lenta.
Nome alternativoLegatura anticipata.Rilegatura tardiva.
EsempioChiamata di funzione sovraccaricata, operatori sovraccarichi.Funzione virtuale in C ++, metodi ignorati in Java.

Definizioni di rilegatura statica

Quando il compilatore riconosce tutte le informazioni necessarie per chiamare una funzione o tutti i valori delle variabili durante il tempo di compilazione, viene chiamato "associazione statica“. Poiché tutte le informazioni richieste sono note prima del runtime, aumenta l'efficienza del programma e migliora anche la velocità di esecuzione di un programma.


Il Binding statico rende un programma molto efficiente, ma diminuisce la flessibilità del programma, poiché "valori della variabile" e "funzione chiamata" sono predefiniti nel programma. Il binding statico è implementato in un programma al momento della codifica.

Il sovraccarico di una funzione o di un operatore sono l'esempio del polimorfismo in fase di compilazione, ovvero il legame statico.

Implementazione dell'associazione statica in C ++ con un esempio di sovraccarico

#includere usando lo spazio dei nomi std; sovraccarico di classe {int a, b; public: int load (int x) {// funzione first load (). a = x; cout << "Il valore di x è" <funz (); // L'istruzione precedente decide quale funzione delle classi deve essere invocata. p = & d1; // La modifica del puntatore cambia. p-> funz (); // L'istruzione precedente decide quale funzione delle classi deve essere invocata. p = & d2; // Cambia nuovamente vlaue del puntatore. p-> funz (); // L'istruzione precedente decide quale funzione delle classi deve essere invocata. ritorna 0; }

Qui il valore del puntatore cambia quando il programma è in esecuzione e il valore del puntatore decide quale funzione della classe verrà invocata. Quindi qui, le informazioni sono fornite in fase di esecuzione, ci vuole tempo per associare i dati che rallentano l'esecuzione.

  1. Gli eventi che si verificano in fase di compilazione come, ad esempio, un codice funzione è associato a una chiamata di funzione o all'assegnazione di un valore a una variabile, sono chiamati Binding statico / anticipato. Al contrario, quando questi compiti vengono eseguiti durante il runtime, vengono chiamati Binding dinamico / tardivo.
  2. "Efficienza" aumenta nel binding statico, poiché tutti i dati vengono raccolti prima dell'esecuzione. Ma in Binding dinamico, i dati vengono acquisiti in fase di esecuzione in modo da poter decidere quale valore assegnare una variabile e quale funzione richiamare in fase di esecuzione rende l'esecuzione "flessibile".
  3. L '"associazione statica" rende "più veloce" l'esecuzione di un programma poiché tutti i dati necessari per eseguire un programma sono noti prima dell'esecuzione. In "associazione dinamica" i dati necessari per eseguire un programma sono noti al compilatore al momento dell'esecuzione, il che impiega il tempo necessario per associare i valori agli identificatori; quindi, rallenta l'esecuzione del programma.
  4. Il Binding statico è anche chiamato Binding anticipato perché il codice funzione è associato alla chiamata della funzione durante il tempo di compilazione, che è precedente al Binding dinamico in cui il codice funzione è associato alla chiamata della funzione durante il runtime, quindi viene anche chiamato binding tardivo.

Conclusione:

Tuttavia, concludiamo che quando abbiamo una conoscenza preliminare dei valori della variabile e della chiamata di funzione, applichiamo l'associazione statica. Al contrario, in Binding dinamico, forniamo tutte le informazioni al momento dell'esecuzione.