Cwiczenie: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
=Proste eksperymenty ze środowiskiem= | =Proste eksperymenty ze środowiskiem= | ||
Który program wykona się szybciej: | Który program wykona się szybciej: | ||
x = 1.0; | x = 1.0; | ||
for( i = 0; i < N; i++) | '''for'''( i = 0; i < N; i++) | ||
x = x/3.0; | |||
czy | czy | ||
x = 1.0; f = <math>1.0/3.0</math>; | |||
'''for'''( i = 0; i < N; i++) | |||
x = x*f; | |||
Oczywiście, szybszy będzie program nie wykorzystujący dzielenia. Optymalizujący | 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 | kompilator (\lstux!gcc -O3!) strawi, a nawet będzie jeszcze bardziej zadowolony z pozornie | ||
rozrzutnego kodu | rozrzutnego kodu | ||
x = 1.0; | x = 1.0; | ||
for( i = 0; i < N; i++) | '''for'''( i = 0; i < N; i++) | ||
x = x*(1.0/3.0); | |||
dlatego, że stałą, przez którą trzeba mnożyć <math>x</math>, wyliczy przed wykonaniem | dlatego, że stałą, przez którą trzeba mnożyć <math>x</math>, wyliczy przed wykonaniem | ||
programu. | programu. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy | Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy | ||
ze wszystkich... | ze wszystkich... | ||
<div class="mw-collapsible-content" style="display:none">Okazuje się, że nie!</div> | |||
</div> | |||
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...