optymalizacja czasowa programów

Transkrypt

optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
Inżynieria oprogramowania:
optymalizacja czasowa programów
Zdzisław Sroczyński
Politechnika Śląska
Instytut Matematyki
Wydział Matematyki Stosowanej
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ program wielokrotnego użycia
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ program wielokrotnego użycia
ˆ optymalizacja przewidziana w celach projektu
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ program wielokrotnego użycia
ˆ optymalizacja przewidziana w celach projektu
ˆ określone wymogi na sprawność programu
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ
ˆ
ˆ
ˆ
program wielokrotnego użycia
optymalizacja przewidziana w celach projektu
określone wymogi na sprawność programu
istotna poprawa wydajności po optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ
ˆ
ˆ
ˆ
ˆ
program wielokrotnego użycia
optymalizacja przewidziana w celach projektu
określone wymogi na sprawność programu
istotna poprawa wydajności po optymalizacji
ograniczenie ryzyka wprowadzenia nowych błędów
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ
ˆ
ˆ
ˆ
ˆ
program wielokrotnego użycia
optymalizacja przewidziana w celach projektu
określone wymogi na sprawność programu
istotna poprawa wydajności po optymalizacji
ograniczenie ryzyka wprowadzenia nowych błędów
▶ Sposoby optymalizacji czasowej programów:
ˆ ponowny projekt z wykorzystaniem ulepszonych
algorytmów lub nowych struktur danych
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ
ˆ
ˆ
ˆ
ˆ
program wielokrotnego użycia
optymalizacja przewidziana w celach projektu
określone wymogi na sprawność programu
istotna poprawa wydajności po optymalizacji
ograniczenie ryzyka wprowadzenia nowych błędów
▶ Sposoby optymalizacji czasowej programów:
ˆ ponowny projekt z wykorzystaniem ulepszonych
algorytmów lub nowych struktur danych
ˆ usprawnienie fragmentów programu bez modyfikacji
algorytmu jako całości
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Priorytet: poprawność i niezawodność programów
▶ Warunki przeprowadzenia optymalizacji programu:
ˆ
ˆ
ˆ
ˆ
ˆ
program wielokrotnego użycia
optymalizacja przewidziana w celach projektu
określone wymogi na sprawność programu
istotna poprawa wydajności po optymalizacji
ograniczenie ryzyka wprowadzenia nowych błędów
▶ Sposoby optymalizacji czasowej programów:
ˆ ponowny projekt z wykorzystaniem ulepszonych
algorytmów lub nowych struktur danych
ˆ usprawnienie fragmentów programu bez
modyfikacji algorytmu jako całości
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
ˆ profil dynamiczny programu – procent czasu zużywany
przez poszczególne fragmenty
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
ˆ profil dynamiczny programu – procent czasu zużywany
przez poszczególne fragmenty
ˆ stopień (procent) optymalizacji możliwy do osiągnięcia w
poszczególnych fragmentach
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
ˆ profil dynamiczny programu – procent czasu zużywany
przez poszczególne fragmenty
ˆ stopień (procent) optymalizacji możliwy do osiągnięcia w
poszczególnych fragmentach
ˆ celowość optymalizacji (rzadko używane funkcje, czas
reakcji systemu w systemach czasu rzeczywistego)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
ˆ profil dynamiczny programu – procent czasu zużywany
przez poszczególne fragmenty
ˆ stopień (procent) optymalizacji możliwy do osiągnięcia w
poszczególnych fragmentach
ˆ celowość optymalizacji (rzadko używane funkcje, czas
reakcji systemu w systemach czasu rzeczywistego)
ˆ liczba osobogodzin koniecznych do wykonania
optymalizacji w poszczególnych fragmentach –
opłacalność optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Stosunek kosztów do wartości planowanych
usprawnień
▶ Czynniki istotne podczas optymalizacji czasowej:
ˆ profil dynamiczny programu – procent czasu zużywany
przez poszczególne fragmenty
ˆ stopień (procent) optymalizacji możliwy do osiągnięcia w
poszczególnych fragmentach
ˆ celowość optymalizacji (rzadko używane funkcje, czas
reakcji systemu w systemach czasu rzeczywistego)
ˆ liczba osobogodzin koniecznych do wykonania
optymalizacji w poszczególnych fragmentach –
opłacalność optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
▶ reguła 90–10 (jedna z wielu)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
▶ reguła 90–10 (jedna z wielu)
▶ metody znajdowania regionów krytycznych:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
▶ reguła 90–10 (jedna z wielu)
▶ metody znajdowania regionów krytycznych:
ˆ automatyczne wyznaczenie profilu dynamicznego (za
pomocą programu/modułu profilera)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
▶ reguła 90–10 (jedna z wielu)
▶ metody znajdowania regionów krytycznych:
ˆ automatyczne wyznaczenie profilu dynamicznego (za
pomocą programu/modułu profilera)
ˆ pomiar czasu wykonywania fragmentów programu
(głównie podprogramów – funkcji, metod)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Wybór fragmentu pozwalającego na istotną
optymalizację
▶ region krytyczny – stosunkowo niewielki (10%)
fragment programu, który zajmuje większą część
czasu wykonania (90%)
▶ reguła 90–10 (jedna z wielu)
▶ metody znajdowania regionów krytycznych:
ˆ automatyczne wyznaczenie profilu dynamicznego (za
pomocą programu/modułu profilera)
ˆ pomiar czasu wykonywania fragmentów programu
(głównie podprogramów – funkcji, metod)
ˆ generowanie histogramu z wykorzystaniem przerwań
sprzętowych
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
Raport profilera:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
pomiar.php: czas wykonania programu w PHP
<?php
$_licznik =0;
function pomiar_start ( )
{
global $_licznik ;
l i s t ( $usec , $sec ) = e x p l o d e ( ’ ’ , m i c r o t i m e ( ) ) ;
$_licznik =(( float ) $usec + ( float ) $sec ) ;
}
function pomiar_stop ( $napis )
{
global $_licznik ;
l i s t ( $usec , $sec ) = e x p l o d e ( ’ ’ , m i c r o t i m e ( ) ) ;
$czas =(( float ) $usec + ( float ) $sec )−$_licznik ;
p r i n t f ( ’%s − Czas w y k o n a n i a : %.4 f<b r /> ’ , $napis , $czas ) ;
}
?>
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
▶ Złożoność algorytmów czynnikiem utrudniającym
wybór fragmentu do optymalizacji
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
▶ Złożoność algorytmów czynnikiem utrudniającym
wybór fragmentu do optymalizacji
ˆ zależność czasu wykonania od rozmiaru i/lub jakości
danych wejściowych
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
▶ Złożoność algorytmów czynnikiem utrudniającym
wybór fragmentu do optymalizacji
ˆ zależność czasu wykonania od rozmiaru i/lub jakości
danych wejściowych
ˆ złożoność optymistyczna, pesymistyczna, średnia
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
▶ Złożoność algorytmów czynnikiem utrudniającym
wybór fragmentu do optymalizacji
ˆ zależność czasu wykonania od rozmiaru i/lub jakości
danych wejściowych
ˆ złożoność optymistyczna, pesymistyczna, średnia
ˆ testy i pomiary powinny być wykonywane dla różnych
zestawów danych, np. z określeniem odchylenia
standardowego
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Oszacowanie możliwych rezultatów optymalizacji
▶ Wykorzystanie heurystyki i doświadczenia
programisty, przegląd możliwych do zastosowania
optymalizacji
▶ Złożoność algorytmów czynnikiem utrudniającym
wybór fragmentu do optymalizacji
ˆ zależność czasu wykonania od rozmiaru i/lub jakości
danych wejściowych
ˆ złożoność optymistyczna, pesymistyczna, średnia
ˆ testy i pomiary powinny być wykonywane dla różnych
zestawów danych, np. z określeniem odchylenia
standardowego
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Zależność od translatora i konkretnego języka
programowania (pseudokod)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Zależność od translatora i konkretnego języka
programowania (pseudokod)
▶ Zwijanie - wykonywanie czynności na etapie
kompilacji, np. inicjalizacja zmiennych, wyliczanie
wartości wyrażeń zawierających wyłącznie stałe,
użycie dyrektyw kompilacji warunkowej.
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Zależność od translatora i konkretnego języka
programowania (pseudokod)
▶ Zwijanie - wykonywanie czynności na etapie
kompilacji, np. inicjalizacja zmiennych, wyliczanie
wartości wyrażeń zawierających wyłącznie stałe,
użycie dyrektyw kompilacji warunkowej.
▶ Zmniejszanie siły operacji - zastąpienie operacji
czasochłonnych operacjami szybszymi, np.
zastąpienie potęgowania mnożeniem:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Zależność od translatora i konkretnego języka
programowania (pseudokod)
▶ Zwijanie - wykonywanie czynności na etapie
kompilacji, np. inicjalizacja zmiennych, wyliczanie
wartości wyrażeń zawierających wyłącznie stałe,
użycie dyrektyw kompilacji warunkowej.
▶ Zmniejszanie siły operacji - zastąpienie operacji
czasochłonnych operacjami szybszymi, np.
zastąpienie potęgowania mnożeniem:
Zmniejszanie siły operacji
w := a ˆ 3 ;
w := a * a * a ;
w :=2 * b ;
w := b+b ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń nadmiarowych - obliczanie
powtarzających się wyrażeń jednorazowo z
zapamiętaniem w zmiennej pomocniczej:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń nadmiarowych - obliczanie
powtarzających się wyrażeń jednorazowo z
zapamiętaniem w zmiennej pomocniczej:
Usuwanie wyrażeń nadmiarowych
x := s q r t ( z ) / s i n ( y ) + 1 6 ;
w := s q r t ( z ) ;
u := fn ( s q r t ( z ) / s i n ( y ) ) ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń nadmiarowych - obliczanie
powtarzających się wyrażeń jednorazowo z
zapamiętaniem w zmiennej pomocniczej:
Usuwanie wyrażeń nadmiarowych
x := s q r t ( z ) / s i n ( y ) + 1 6 ;
w := s q r t ( z ) ;
u := fn ( s q r t ( z ) / s i n ( y ) ) ;
Usuwanie wyrażeń
nadmiarowych - poprawka
p1
p2
x
w
u
:=
:=
:=
:=
:=
sqrt (z) ;
p1 / s i n ( y ) ;
p2 + 1 6 ;
p1 ;
fn ( p2 ) ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń nadmiarowych - obliczanie
powtarzających się wyrażeń jednorazowo z
zapamiętaniem w zmiennej pomocniczej:
Usuwanie wyrażeń nadmiarowych
x := s q r t ( z ) / s i n ( y ) + 1 6 ;
w := s q r t ( z ) ;
u := fn ( s q r t ( z ) / s i n ( y ) ) ;
Usuwanie wyrażeń
nadmiarowych - poprawka
p1
p2
x
w
u
:=
:=
:=
:=
:=
sqrt (z) ;
p1 / s i n ( y ) ;
p2 + 1 6 ;
p1 ;
fn ( p2 ) ;
Usuwanie wyrażeń
nadmiarowych - poprawka 2
w
pom
x
u
Zdzisław Sroczyński
:=
:=
:=
:=
sqrt (z) ;
w / sin (y) ;
pom + 1 6 ;
fn ( pom ) ;
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń niezmienniczych - jednokrotne
wyliczenie przed pętlą wartości wyrażeń, które nie
zależą od wartości zmiennej sterującej, ani innych
zmiennych modyfikowanych w ciele pętli:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń niezmienniczych - jednokrotne
wyliczenie przed pętlą wartości wyrażeń, które nie
zależą od wartości zmiennej sterującej, ani innych
zmiennych modyfikowanych w ciele pętli:
Usuwanie wyrażeń niezmienniczych
f o r i := 1 t o 100 do
t [ i ] := s i n ( y ) * t [ i ] ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Usuwanie wyrażeń niezmienniczych - jednokrotne
wyliczenie przed pętlą wartości wyrażeń, które nie
zależą od wartości zmiennej sterującej, ani innych
zmiennych modyfikowanych w ciele pętli:
Usuwanie wyrażeń niezmienniczych
f o r i := 1 t o 100 do
t [ i ] := s i n ( y ) * t [ i ] ;
Usuwanie wyrażeń niezmienniczych - poprawka
pom := s i n ( y ) ;
f o r i := 1 t o 100 do
t [ i ] := pom * t [ i ] ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
PHP - usuwanie wyrażeń niezmienniczych
<?php
i n c l u d e ( ’ p o m i a r . php ’ ) ;
pomiar_start ( ) ;
ob start () ;
f o r ( $j =1; $j <=100;$j++)
f o r ( $i =1; $i <=3600; $i++)
echo ’ Kąt w s t o p n i a c h : ’ . $i . ’ = Kąt w r a d i a n a c h :
ob clean () ;
pomiar_stop ( ’ W a r i a n t 1 − P o w t a r z a n i e o b l i c z e ń ’ ) ;
’ . ( $i * 3 . 1 4 / 1 8 0 ) . ’<b r /> ’ ;
pomiar_start ( ) ;
ob start () ;
$strd = 3 . 1 4 / 1 8 0 ;
f o r ( $j =1; $j <=100;$j++)
f o r ( $i =1; $i <=3600; $i++)
echo ’ Kąt w s t o p n i a c h : ’ . $i . ’ = Kąt w r a d i a n a c h : ’ . ( $i * $strd ) . ’<b r /> ’ ;
ob clean () ;
pomiar_stop ( ’ W a r i a n t 2 − Bez p o w t a r z a n i a o b l i c z e ń ’ ) ;
?>
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozszczepianie - podział pętli w przypadku, gdy
wewnątrz pętli występuje warunek niezależny od
zmiennej sterującej:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozszczepianie - podział pętli w przypadku, gdy
wewnątrz pętli występuje warunek niezależny od
zmiennej sterującej:
Rozszczepianie
f o r i := 1 t o nmax do
i f dodawanie=true t h e n
a := a + n
else
a := a − n ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozszczepianie - podział pętli w przypadku, gdy
wewnątrz pętli występuje warunek niezależny od
zmiennej sterującej:
Rozszczepianie
f o r i := 1 t o nmax do
i f dodawanie=true t h e n
a := a + n
else
a := a − n ;
Rozszczepianie - poprawka
i f dodawanie=true t h e n
f o r i := 1 t o nmax do
a := a + n
else
f o r i := 1 t o nmax do
a := a − n ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozwijanie pętli - zwiększenie kroku pętli
zmniejszające liczbę sprawdzeń warunku:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozwijanie pętli - zwiększenie kroku pętli
zmniejszające liczbę sprawdzeń warunku:
Rozwijanie pętli
i :=0;
w h i l e ( i < 3 0 0 ) do
begin
a [ i ] := 0 ;
i := i + 1 ;
end ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Rozwijanie pętli - zwiększenie kroku pętli
zmniejszające liczbę sprawdzeń warunku:
Rozwijanie pętli
i :=0;
w h i l e ( i < 3 0 0 ) do
begin
a [ i ] := 0 ;
i := i + 1 ;
end ;
Rozwijanie pętli - poprawka
i :=0;
w h i l e ( i < 3 0 0 ) do
begin
a [ i ] := 0 ;
a [ i +1] := 0 ;
a [ i +2] := 0 ;
i := i + 3 ;
end ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Łączenie pętli - polega na połączeniu ciał pętli o
identycznych ograniczeniach zmiennej sterującej:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Łączenie pętli - polega na połączeniu ciał pętli o
identycznych ograniczeniach zmiennej sterującej:
Łączenie pętli
f o r i := 1 t o 100 do
t [ i ]:=0;
f o r i := 1 t o 100 do
w [ i ]:=0;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Łączenie pętli - polega na połączeniu ciał pętli o
identycznych ograniczeniach zmiennej sterującej:
Łączenie pętli
f o r i := 1 t o 100 do
t [ i ]:=0;
f o r i := 1 t o 100 do
w [ i ]:=0;
Łączenie pętli - poprawka
f o r i := 1 t o 100 do
begin
t [ i ]:=0;
w [ i ]:=0;
end ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Reorganizacja pętli - pętle zewnętrzne powinny być
powtarzane możliwie najmniej razy:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Reorganizacja pętli - pętle zewnętrzne powinny być
powtarzane możliwie najmniej razy:
Reorganizacja pętli (startów: 2101, zamknięć: 12100)
f o r i := 1 t o 100 do { s t a r t 1 r a z }
f o r j := 1 t o 20 do { s t a r t 100 r a z y }
f o r z := 1 t o 5 do { s t a r t 2000 r a z y }
t [i , j , z ]:=0;
{ z a m k n i ę c i e 10000 r a z y }
{ z a m k n i e c i e d l a j 2000 r a z y }
{ z a m k n i e c i e d l a i 100 r a z y }
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Reorganizacja pętli - pętle zewnętrzne powinny być
powtarzane możliwie najmniej razy:
Reorganizacja pętli (startów: 2101, zamknięć: 12100)
f o r i := 1 t o 100 do { s t a r t 1 r a z }
f o r j := 1 t o 20 do { s t a r t 100 r a z y }
f o r z := 1 t o 5 do { s t a r t 2000 r a z y }
t [i , j , z ]:=0;
{ z a m k n i ę c i e 10000 r a z y }
{ z a m k n i e c i e d l a j 2000 r a z y }
{ z a m k n i e c i e d l a i 100 r a z y }
Reorganizacja pętli - popr. (startów: 106, zamkn.: 10105)
f o r z := 1 to 5 do {start 1 raz}
f o r j := 1 to 20 do {start 5 razy}
f o r i := 1 to 100 do {start 100 razy}
t [i , j , z ]:=0;
{zamknięcie 10000 razy}
{zamkniecie dla j 100 razy}
{zamkniecie dla z 5 razy}
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
PHP - reorganizacja pętli
<?php
i n c l u d e ( ’ p o m i a r . php ’ ) ;
pomiar_start ( ) ;
f o r ( $i= 1 ; $i <=1000; $i++)
f o r ( $j =1; $j <=200;$j++)
f o r ( $z =1; $z<=5;$z++)
$t [ i ] [ j ] [ z ] = 0 ;
pomiar_stop ( ’ W a r i a n t 1 − d u z e p r z e b i e g i w zewn .
pomiar_start ( ) ;
f o r ( $z =1; $z<=5;$z++)
f o r ( $j =1; $j <=200;$j++)
f o r ( $i= 1 ; $i <=1000; $i++)
$t [ i ] [ j ] [ z ] = 0 ;
pomiar_stop ( ’ W a r i a n t 2 − male p r z e b i e g i w zewn .
?>
Zdzisław Sroczyński
petli ’) ;
petli ’) ;
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
ˆ dla translatora sprawdzającego warunki złożone tylko do
momentu, w którym znana jest wartość wyrażenia:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
ˆ dla translatora sprawdzającego warunki złożone tylko do
momentu, w którym znana jest wartość wyrażenia:
– dla operatora oraz/and najpierw człony zwykle fałszywe
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
ˆ dla translatora sprawdzającego warunki złożone tylko do
momentu, w którym znana jest wartość wyrażenia:
– dla operatora oraz/and najpierw człony zwykle fałszywe
– dla operatora lub/or najpierw człony zwykle prawdziwe
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
ˆ dla translatora sprawdzającego warunki złożone tylko do
momentu, w którym znana jest wartość wyrażenia:
– dla operatora oraz/and najpierw człony zwykle fałszywe
– dla operatora lub/or najpierw człony zwykle prawdziwe
Optymalizacja instrukcji warunkowych
i f x = 1 t h e n p1 ;
i f x = 2 t h e n p2 ;
i f x = 2 t h e n p3 ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Optymalizacja instrukcji warunkowych:
ˆ dla rozłącznych warunków użycie członu else
ˆ dla translatora sprawdzającego warunki złożone tylko do
momentu, w którym znana jest wartość wyrażenia:
– dla operatora oraz/and najpierw człony zwykle fałszywe
– dla operatora lub/or najpierw człony zwykle prawdziwe
Optymalizacja instrukcji warunkowych
i f x = 1 t h e n p1 ;
i f x = 2 t h e n p2 ;
i f x = 2 t h e n p3 ;
Optymalizacja instrukcji warunkowych - poprawka
i f x = 1 t h e n p1
else
i f x = 2 t h e n p2
else
i f x = 2 t h e n p3 ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do elementów tablic – podstawienie pod
zmienną prostą wielokrotnie wykorzystywanego
elementu tablicy:
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do elementów tablic – podstawienie pod
zmienną prostą wielokrotnie wykorzystywanego
elementu tablicy:
Odwołania do elementów tablic
x := t [ i ] + t [ i ] + t [ i ] ;
f o r i := 1 t o 100 do
t [ i ] := w [ k + 2 * j ] ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do elementów tablic – podstawienie pod
zmienną prostą wielokrotnie wykorzystywanego
elementu tablicy:
Odwołania do elementów tablic
x := t [ i ] + t [ i ] + t [ i ] ;
f o r i := 1 t o 100 do
t [ i ] := w [ k + 2 * j ] ;
Odwołania do elementów tablic - poprawka
p i := t [ i ] ; x := p i + p i + p i ;
wp := w [ k + 2 * j ] ;
f o r i := 1 t o 100 do
t [ i ] := wp ;
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do pól rekordów/struktur/obiektów –
duża zależność od translatora.
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do pól rekordów/struktur/obiektów –
duża zależność od translatora.
▶ Rozwijanie funkcji – umieszczenie ciała funkcji w
miejsce jej wywołania (jeśli wywoływanie następuje
w niewielu miejscach).
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do pól rekordów/struktur/obiektów –
duża zależność od translatora.
▶ Rozwijanie funkcji – umieszczenie ciała funkcji w
miejsce jej wywołania (jeśli wywoływanie następuje
w niewielu miejscach).
▶ Optymalizacje translatora – optymalizacja kodu w
opcjach kompilatora, konieczność ponownego
testowania po włączeniu optymalizacji.
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ Odwołania do pól rekordów/struktur/obiektów –
duża zależność od translatora.
▶ Rozwijanie funkcji – umieszczenie ciała funkcji w
miejsce jej wywołania (jeśli wywoływanie następuje
w niewielu miejscach).
▶ Optymalizacje translatora – optymalizacja kodu w
opcjach kompilatora, konieczność ponownego
testowania po włączeniu optymalizacji.
▶ Negatywny wpływ na przejrzystość kodu – niektóre
z optymalizacji.
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ operacje wejścia-wyjścia (dla języków skryptowych,
webowych - np. PHP)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ operacje wejścia-wyjścia (dla języków skryptowych,
webowych - np. PHP)
PHP - różne metody przetwarzania tekstu
<?php
i n c l u d e ( ’ p o m i a r . php ’ ) ;
pomiar_start ( ) ;
$tab=a r r a y ( ) ;
f o r ( $i =0; $i <100000; $i++) $tab [ ] = ” Z a w a r t o ś ć z m i e n n e j $ i <b r />” ;
pomiar_stop ( ’ W a r i a n t 1 − C u d z y s ł o w y ’ ) ;
pomiar_start ( ) ;
$tab=a r r a y ( ) ;
f o r ( $i =0; $i <100000; $i++) $tab [ ] = ’ Z a w a r t o ś ć z m i e n n e j
pomiar_stop ( ’ W a r i a n t 2 − A p o s t r o f y ’ ) ;
’ . $i . ’ <b r /> ’ ;
?>
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
PHP - funkcje wyjściowe dla tekstów
<?php
i n c l u d e ( ’ p o m i a r . php ’ ) ;
pomiar_start ( ) ;
ob start () ;
f o r ( $i =0; $i <100000; $i++) p r i n t f ( ’ Z a w a r t o ś ć z m i e n n e j
ob clean () ;
pomiar_stop ( ’ W a r i a n t 1 − p r i n t f ’ ) ;
pomiar_start ( ) ;
ob start () ;
f o r ( $i =0; $i <100000; $i++) p r i n t ( ’ Z a w a r t o ś ć z m i e n n e j
ob clean () ;
pomiar_stop ( ’ W a r i a n t 2 − p r i n t ’ ) ;
pomiar_start ( ) ;
ob start () ;
f o r ( $i =0; $i <100000; $i++) echo ( ’ Z a w a r t o ś ć z m i e n n e j
ob clean () ;
pomiar_stop ( ’ W a r i a n t 3 − e c h o ’ ) ;
’ . $i . ’ <b r /> ’ ) ;
’ . $i . ’ <b r /> ’ ) ;
’ . $i . ’ <b r /> ’ ) ;
?>
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ buforowanie operacji we/wy, mapowanie plików w
pamięci operacyjnej
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ buforowanie operacji we/wy, mapowanie plików w
pamięci operacyjnej
▶ narzut wprowadzany przez system operacyjny/inne
oprogramowanie (np. antywirusowe)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ buforowanie operacji we/wy, mapowanie plików w
pamięci operacyjnej
▶ narzut wprowadzany przez system operacyjny/inne
oprogramowanie (np. antywirusowe)
▶ obciążenie wynikające z wielozadaniowości i
wielodostępu – wpływ niedeterministyczny
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ buforowanie operacji we/wy, mapowanie plików w
pamięci operacyjnej
▶ narzut wprowadzany przez system operacyjny/inne
oprogramowanie (np. antywirusowe)
▶ obciążenie wynikające z wielozadaniowości i
wielodostępu – wpływ niedeterministyczny
▶ działanie pamięci wirtualnej i dynamicznej
gospodarki pamięcią (odśmiecacz - garbage collector
w C#, Java)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ buforowanie operacji we/wy, mapowanie plików w
pamięci operacyjnej
▶ narzut wprowadzany przez system operacyjny/inne
oprogramowanie (np. antywirusowe)
▶ obciążenie wynikające z wielozadaniowości i
wielodostępu – wpływ niedeterministyczny
▶ działanie pamięci wirtualnej i dynamicznej
gospodarki pamięcią (odśmiecacz - garbage collector
w C#, Java)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
▶ listy oparte na Generykach (Templates) List<T>
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
▶ listy oparte na Generykach (Templates) List<T>
▶ tablice zmiennych prostych
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
▶ listy oparte na Generykach (Templates) List<T>
▶ tablice zmiennych prostych
▶ tablice dynamiczne (o ile istnieją w danym języku)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
▶ listy oparte na Generykach (Templates) List<T>
▶ tablice zmiennych prostych
▶ tablice dynamiczne (o ile istnieją w danym języku)
▶ inne specyficzne typy danych (np. Variant, typy
anonimowe var)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
▶ listy wbudowane w bibliotekę standardową ArrayList
▶ listy oparte na Generykach (Templates) List<T>
▶ tablice zmiennych prostych
▶ tablice dynamiczne (o ile istnieją w danym języku)
▶ inne specyficzne typy danych (np. Variant, typy
anonimowe var)
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów
Wprowadzenie
Wybór kodu do optymalizacji
Przykłady optymalizacji czasowej
Pozostałe czynniki uboczne warunkujące wydajność programów
Dziękuję za uwagę
Następny temat:
optymalizacja pamięciowa programów
Zdzisław Sroczyński
Inżynieria oprogramowania: optymalizacja czasowa programów