szy program używa funkcji zeros do wstępnego przypisania pamięci wektora utworzonego w pętli for: r = zeros (32,1); for n = 1:32
r(n) = rank(magie(n));
end
Bez wstępnego przypisania pamięci w poprzednim przykładzie, interpreter MATLAB-a powiększa wektor r o jeden element za każdym wykonaniem pętli. Wstępne przypisanie pamięci dla wektora eliminuje ten krok i powoduje szybsze wykonanie pętli.
Podczas sesji MATLAB-a, pamięć może ulegać fragmentacji z powodu dynamicznego przydzielania i zwalniania obszarów pamięci. Efektem tego może być duża ilość wolnej pamięci, jednak ciągłe obszary pamięci mogą być niewystarczające do pomieszczenia dużej zmiennej. Wstępne przypisanie pamięci pomaga zredukować fragmentację pamięci podczas pracy z dużymi macierzami oraz umożliwia MATLAB-owi „złapanie" wystarczającej przestrzeni na duże zespoły danych na początku obliczeń.
Niżej zostały przedstawione wartości i funkcje specjalne systemu MATLAB. których możemy użyć w naszych M-plikach. Oprócz zmiennych omówionych wcześniej, w katalogu elmat występują zmienne charakteryzujące stanowisko robocze:
Computer - typ komputera, version - łańcuch wersji MATLAB-a.
Dla optymalizacji tworzonego oprogramowania użyteczne są następujące funkcje: clock - aktualna data i czas systemowy w postaci łańcucha znaków, cputime - czas działania komputera od momentu włączenia, datę - aktualna data z czasu systemowego w postaci łańcucha znaków,
now - aktualna data i czas systemowy w postaci liczby,
et ime - podaje wartość wybranego przedziału czasu, tic - znacznik w programie, startuje stoper odmierzania czasu,
toc - znacznik w programie, odczytuje stoper odmierzania czasu.
Funkcja odmierzania czasu pozwala ocenić wpływ wektoryzacji i zarządzania pamięcią na szybkość obliczeń. Funkcja ta została użyta do oceny wpływu wektoryzacji obliczeń oraz wstępnego przypisania danych w następującym programie [9]:
% Test efektywności stylu programowania elear
% bez utworzonego wektora wyników tic
tO=clock;
for i=l:l:20001;
y(i)=tan((i-1)*0.001-10.0) ;
% y będzie powiększany w każdym kroku iteracji end;
57