Cwiczenie

Z Studia Informatyczne
Wersja z dnia 08:38, 18 lip 2006 autorstwa Aneczka (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Proste eksperymenty ze środowiskiem

\begin{exe} Który program wykona się szybciej: \begin{C} x = 1.0; for( i = 0; i < N; i++) x = x/3.0; \end{C} czy \begin{C} x = 1.0; f = 1.0/3.0; for( i = 0; i < N; i++) x = x*f; \end{C} \end{exe}

\begin{sol} 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 \begin{C} x = 1.0; for( i = 0; i < N; i++) x = x*(1.0/3.0); \end{C} 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...

\ans{Okazuje się, że nie!}

\end{sol}