Cwiczenie: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 6: | Linia 6: | ||
x = 1.0; | x = 1.0; | ||
'''for'''( i = 0; i < N; i++) | '''for'''( i = 0; i < N; i++) | ||
x = x/3.0; | |||
czy | czy | ||
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++) | ||
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 = ; 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ć , wyliczy przed wykonaniem programu.
Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy ze wszystkich...