Metody optymalizacji kodu Optymalizacje mogą dotyczyć (1) drzewa rozbioru gramatycznego bądź grafu przepływu sterowania, a więc być niezależne od docelowej maszyny, lub też (2) uwzględniać jej specyficzne cechy. W zależności od potrzeb i ustawień kompilacji, metody te mogą być wielokrotnie aplikowane podczas optymalizacji kodu.

Przykłady optymalizacji z pierwszej grupy:

Wyliczanie wartości stałych (ang. constant folding) – jeśli to możliwe, obliczanie od razu wartości wyrażeń, w których występują stałe argumenty. Niektóre kompilatory potrafią także wyliczać w chwili kompilacji wartości funkcji dla stałych argumentów. Np. x := 5 * 12 – 1; y := cos(0.0) może zostać uproszczone do x := 59; y := 1.0;. Propagacja stałych (ang. constant propagation) – jeśli zmiennej zostaje przypisywana wartość stała i następnie zmienna używana jest w jakimś wyrażeniu, zostaje zastąpiona stałą. Np. x := 5; y := x * 3 może zostać uproszczone do x := 5; y := 5 * 3 (po wyliczaniu wartości stałych ostatnia instrukcja uprości się z kolei do y := 15). Upraszczanie wyrażeń logicznych i arytmetycznych – zastosowanie znanych własności i tożsamości, np. unikanie mnożenia przez 1 czy dodawania 0. Eliminacja zbędnych wyrażeń – pomijanie tych instrukcji lub wyrażeń, które nie są używane lub których obliczenie będzie miało ten sam wynik. Np.