Różnica między wiązaniem statycznym i dynamicznym

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 17 Móc 2024
Anonim
Różnica między wiązaniem statycznym i dynamicznym - Technologia
Różnica między wiązaniem statycznym i dynamicznym - Technologia

Zawartość


Powiązanie „definicji funkcji” z „wywołaniem funkcji” lub powiązanie „wartości” z „zmienną” nazywa się „wiązaniem”. Podczas kompilacji każda „definicja funkcji” otrzymuje adres pamięci; jak tylko wywołanie funkcji zostanie wykonane, kontrola wykonania programu przechodzi na ten adres pamięci i wykonuje kod funkcji zapisany w tej lokalizacji, jest to Powiązanie „wywołania funkcji” z „definicją funkcji”. Wiązanie można sklasyfikować jako „wiązanie statyczne” i „wiązanie dynamiczne”.

Jeśli przed wykonaniem wiadomo już, która funkcja zostanie wywołana lub jaka wartość zostanie przypisana do zmiennej, jest to „wiązanie statyczne”. jeśli dowie się o tym w czasie wykonywania, nazywa się to „dynamicznym wiązaniem”.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania:

Podstawa do porównaniaWiązanie statyczneDynamiczne wiązanie
Wystąpienie zdarzeniaZdarzenia występujące w czasie kompilacji są „wiązaniem statycznym”.
Zdarzenia występujące w czasie wykonywania to „Dynamiczne wiązanie”.
InformacjaWszystkie informacje potrzebne do wywołania funkcji są znane w czasie kompilacji.Wszystkie informacje muszą wywoływać funkcję poznaną w czasie wykonywania.
KorzyśćWydajność.Elastyczność.
CzasSzybka realizacja.Powolna realizacja.
Alternatywna nazwaWczesne wiązanie.Późne wiązanie.
PrzykładPrzeciążone wywołanie funkcji, przeciążone operatory.Funkcja wirtualna w C ++, przesłonięte metody w Javie.

Definicje wiązania statycznego

Gdy kompilator potwierdzi wszystkie informacje wymagane do wywołania funkcji lub wszystkie wartości zmiennych w czasie kompilacji, nazywa się to „wiązanie statyczne„. Ponieważ wszystkie wymagane informacje są znane przed uruchomieniem, zwiększa wydajność programu, a także przyspiesza wykonanie programu.


Wiązanie statyczne sprawia, że ​​program jest bardzo wydajny, ale zmniejsza elastyczność programu, ponieważ „wartości zmiennej” i „wywołanie funkcji” są wstępnie zdefiniowane w programie. Wiązanie statyczne jest implementowane w programie w momencie kodowania.

Przeciążenie funkcji lub operatora jest przykładem polimorfizmu w czasie kompilacji, tj. Wiązania statycznego.

Implementacja wiązania statycznego w C ++ na przykładzie przeciążenia

#zawierać using namespace std; przeciążenie klasy {int a, b; public: int load (int x) {// pierwsza funkcja load (). a = x; cout << „Wartość x wynosi„ <funk (); // Powyższa instrukcja decyduje, która funkcja klas ma zostać wywołana. p = & d1; // Vlaue zmian wskaźnika. p-> funk (); // Powyższa instrukcja decyduje, która funkcja klas ma zostać wywołana. p = & d2; // Znowu zmieniono wskaźnik. p-> funk (); // Powyższa instrukcja decyduje, która funkcja klas ma zostać wywołana. zwraca 0; }

Tutaj wartość wskaźnika zmienia się, gdy program jest wykonywany, a wartość wskaźnika decyduje, która funkcja klasy zostanie wywołana. Tak więc tutaj informacje są podawane w czasie wykonywania, czas wiązania danych jest spowalniany.


  1. Zdarzenia występujące w czasie kompilacji, takie jak kod funkcji związany z wywołaniem funkcji lub przypisaniem wartości do zmiennej, nazywane są statycznym / wczesnym wiązaniem. Wręcz przeciwnie, gdy zadania te są wykonywane w czasie wykonywania, nazywane są dynamicznym / późnym wiązaniem.
  2. „Wydajność” wzrasta w wiązaniu statycznym, ponieważ wszystkie dane są gromadzone przed wykonaniem. Ale w dynamicznym wiązaniu dane są pobierane w czasie wykonywania, dzięki czemu możemy zdecydować, jaką wartość przypisać zmiennej i jaką funkcję wywołać w czasie wykonywania, dzięki czemu wykonanie będzie „elastyczne”.
  3. „Wiązanie statyczne” powoduje, że wykonywanie programu jest „szybsze”, ponieważ wszystkie dane potrzebne do uruchomienia programu są znane przed wykonaniem. W „dynamicznym wiązaniu” dane potrzebne do uruchomienia programu są znane kompilatorowi w momencie wykonywania, co zajmuje czas na powiązanie wartości z identyfikatorami; dlatego spowalnia wykonywanie programu.
  4. Powiązanie statyczne jest również nazywane wiązaniem wczesnym, ponieważ kod funkcji jest powiązany z wywołaniem funkcji podczas kompilacji, co jest wcześniejsze niż wiązanie dynamiczne, w którym kod funkcji jest powiązany z wywołaniem funkcji podczas działania, dlatego jest również nazywany wiązaniem późnym.

Wniosek:

Jednak dochodzimy do wniosku, że gdy mamy wcześniejszą wiedzę na temat wartości wywoływania zmiennych i funkcji, stosujemy wiązanie statyczne. I odwrotnie, w dynamicznym wiązaniu udostępniamy wszystkie informacje w momencie wykonania.