Cwiczenie: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Aneczka (dyskusja | edycje)
Aneczka (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 12: Linia 12:
  x = 1.0; f = <math>1.0/3.0</math>;
  x = 1.0; f = <math>1.0/3.0</math>;
  '''for'''( i = 0; i < N; i++)
  '''for'''( i = 0; i < N; i++)
  <math>x = x*f;  
  x = x*f;  





Aktualna wersja na dzień 08:56, 18 lip 2006

Proste eksperymenty ze środowiskiem

Który program wykona się szybciej:

x = 1.0;
for( i = 0; i < N; i++)
x = x/3.0; 

czy

x = 1.0; f = 1.0/3.0;
for( i = 0; i < N; i++)
x = x*f; 


Oczywiście, szybszy będzie program nie wykorzystujący dzielenia. Optymalizujący kompilator (\lstux!gcc -O3!) strawi, a nawet będzie jeszcze bardziej zadowolony z pozornie rozrzutnego kodu

x = 1.0; 
for( i = 0; i < N; i++)
x = x*(1.0/3.0); 

dlatego, że stałą, przez którą trzeba mnożyć x, wyliczy przed wykonaniem programu.

Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy ze wszystkich...