Różnica Między Optymalizacją Kodu Zależną Od Maszyny I Niezależną Od Maszyny

Spisu treści:

Różnica Między Optymalizacją Kodu Zależną Od Maszyny I Niezależną Od Maszyny
Różnica Między Optymalizacją Kodu Zależną Od Maszyny I Niezależną Od Maszyny

Wideo: Różnica Między Optymalizacją Kodu Zależną Od Maszyny I Niezależną Od Maszyny

Wideo: Różnica Między Optymalizacją Kodu Zależną Od Maszyny I Niezależną Od Maszyny
Wideo: Najbardziej wydajne maszyny przemysłowe na świecie 2024, Listopad
Anonim

Kluczowa różnica - optymalizacja kodu zależna od maszyny a optymalizacja kodu niezależna od maszyny

Programy komputerowe to zestawy instrukcji wydawanych sprzętowi w celu wykonania zadań. Programy te są w większości napisane w językach wysokiego poziomu, a komputer nie rozumie tego języka. Dlatego do konwersji tych instrukcji na kod maszynowy lub kod docelowy używany jest kompilator. Budowa kodu docelowego przebiega przez kilka faz. Optymalizacja kodu jest jedną z nich. Istnieją dwie techniki optymalizacji, takie jak optymalizacja kodu zależna od maszyny i optymalizacja kodu niezależna od maszyny. Kluczowa różnica między optymalizacją kodu zależną od maszyny i optymalizacją niezależną od maszyny polega na tym, że optymalizacja zależna od maszyny jest stosowana do kodu wynikowego, podczas gdy optymalizacja kodu niezależna od maszyny jest stosowana do kodu pośredniego.

ZAWARTOŚĆ

1. Omówienie i kluczowe różnice

2. Czym jest optymalizacja kodu zależna od maszyny

3. Czym jest optymalizacja kodu

zależna od maszyny 4. Podobieństwa między optymalizacją kodu zależną od maszyny i niezależną od maszyny

5. Porównanie obok siebie - optymalizacja kodu zależna od maszyny i niezależna od maszyny w formie tabelarycznej

6. Podsumowanie

Co to jest optymalizacja kodu zależna od komputera?

Podczas konwersji kodu źródłowego na kod wynikowy lub docelowy kompilator przechodzi przez kilka faz. Najpierw kod źródłowy jest przekazywany do analizatora leksykalnego, który generuje tokeny. Następnie dane wyjściowe są przekazywane do analizatora składni, który bada, czy wygenerowane tokeny są w logicznej kolejności. Wynik ten jest przekazywany do analizatora semantycznego. Załóżmy, że istnieje fragment kodu jako p = q + r;

Tutaj p, q są liczbami całkowitymi, ale r jest liczbą zmiennoprzecinkową. Za pomocą analizatora semantycznego zmienna całkowita c jest konwertowana na liczbę zmiennoprzecinkową. Dlatego przeprowadza analizę semantyczną. Dane wyjściowe analizatora semantycznego trafiają do pośredniego generatora kodu. Zwraca kod pośredni, który następnie trafia do optymalizatora kodu. Optymalizacja kodu to proces eliminacji zbędnych instrukcji programu bez zmiany znaczenia rzeczywistego kodu źródłowego. Nie jest to obowiązkowa optymalizacja, ale może poprawić czas wykonywania kodu docelowego. Dane wyjściowe optymalizatora kodu są przekazywane do generatora kodu, a na końcu budowany jest kod docelowy.

Różnica między optymalizacją kodu zależną od maszyny i niezależną od maszyny
Różnica między optymalizacją kodu zależną od maszyny i niezależną od maszyny

Rysunek 01: Fazy kompilatora

W optymalizacji kodu zależnej od maszyny optymalizacja jest stosowana do kodu źródłowego. Przydzielenie wystarczającej ilości zasobów może usprawnić wykonanie programu w tej optymalizacji.

Co to jest optymalizacja kodu niezależna od maszyny?

Optymalizacja kodu pośredniego nazywana jest optymalizacją kodu niezależną od maszyny. Istnieją różne techniki optymalizacji kodu niezależnego od maszyny. Opisano je na poniższych przykładach.

Przeczytaj poniższe wiersze kodu.

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

b = x + 2;

a [j] = 5 * j;

}

Zgodnie z powyższym kodem b = x + 2 jest obliczane wielokrotnie w każdej iteracji. Po obliczeniu b nie zmienia się. Tak więc tę linię można umieścić poza pętlą w następujący sposób.

b = x + 2;

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

{a [j] = 5 * j;

}

Nazywa się to ruchem kodu.

Przeczytaj poniższe wiersze kodu.

j = 5;

if (j == 10) {

a = b + 20;

}

Zgodnie z powyższym kodem, 'if block' nigdy nie zostanie wykonane, ponieważ wartość j nigdy nie będzie równa 10. Jest już zainicjowana na wartość 5. Dlatego, jeśli blok można usunąć. Ta technika polega na eliminacji martwego kodu.

Inną metodą jest redukcja siły. Operacje arytmetyczne, takie jak mnożenie, wymagają więcej pamięci, czasu i cykli procesora. Te drogie wyrażenia można zastąpić tanimi wyrażeniami, takimi jak b = a * 2; lub można je zastąpić przez dodanie, b = a + a;

Zapoznaj się z poniższym kodem.

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

wartość = j * 5;

}

Zamiast mnożenia kod można zmienić w następujący sposób.

int temp = 5;

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

temp = temp + 5;

wartość = temp;

}

Istnieje możliwość oceny wyrażeń, które są stałymi w czasie wykonywania. Nazywa się to ciągłym składaniem. Można stwierdzić, że b [j + 1] = c [j + 1];

Zamiast tego można go zmienić w następujący sposób.

n = j +1;

b [n] = c [n];

Pętle mogą być następujące.

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

printf („a / n”);

}

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

printf („b / n”);

}

Drukowanie a i b ma taką samą liczbę iteracji. Oba można połączyć w jedną pętlę for w następujący sposób.

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

printf („a / n”);

printf („b / n”);

}

Inną ważną techniką jest eliminacja podwyrażenia Common. Polega ona na zastąpieniu identycznych wyrażeń jedną zmienną, aby wykonać obliczenia. Zapoznaj się z poniższym kodem.

a = b * c + k;

d = b * c + m;

Ten kod można przekonwertować w następujący sposób.

temp = b * c;

a = temp + k;

d = temp + m;

Nie jest wymagane wielokrotne obliczanie b * c. Pomnożona wartość może być przechowywana w zmiennej i ponownie używana.

Jakie jest podobieństwo między optymalizacją kodu zależną od komputera a optymalizacją kodu niezależną od komputera?

Oba należą do optymalizacji kodu

Jaka jest różnica między optymalizacją kodu zależną od komputera a optymalizacją kodu niezależną od komputera?

Porównaj środek artykułu przed tabelą

Optymalizacja kodu zależna od maszyny a optymalizacja kodu niezależna od maszyny

Optymalizacja kodu zależna od maszyny jest stosowana do kodu wynikowego. Optymalizacja kodu niezależna od maszyny jest stosowana do kodu pośredniego.
Zaangażowanie w sprzęt
Optymalizacja zależna od maszyny obejmuje rejestry procesora i bezwzględne odniesienia do pamięci. Optymalizacja kodu niezależna od maszyny nie obejmuje rejestrów procesora ani bezwzględnych odniesień do pamięci.

Podsumowanie - optymalizacja kodu zależna od komputera a optymalizacja kodu niezależna od komputera

Optymalizacja kodu składa się z dwóch technik optymalizacji, a mianowicie optymalizacji kodu zależnej od maszyny i optymalizacji kodu niezależnej od maszyny. Różnica między optymalizacją kodu zależną od maszyny i optymalizacją niezależną od maszyny polega na tym, że optymalizacja zależna od maszyny jest stosowana do kodu wynikowego, podczas gdy optymalizacja kodu niezależna od maszyny jest stosowana do kodu pośredniego.

Pobierz wersję PDF optymalizacji kodu zależnego od komputera i niezależnej od komputera

Możesz pobrać wersję PDF tego artykułu i używać jej w trybie offline, zgodnie z notą cytowania. Pobierz wersję PDF tutaj. Różnica między optymalizacją kodu zależną od komputera a optymalizacją kodu niezależną od komputera

Zalecane: