Cwiczenie: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
|||
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++) | |||
<math>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> | |||
Wersja z 08:55, 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++) Parser nie mógł rozpoznać (błąd składni): {\displaystyle 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ć <math>x} , wyliczy przed wykonaniem
programu.
Sprawdź, czy z wyłączoną optymalizacją ten kod okaże się najwolniejszy ze wszystkich...