<<

. 11
( 11 .)



Die gemessenen Zeiten sprechen fur sich...
¨
Neben vektorieller Zuweisung sind auch Summierung, Produktbildung und
Maximierung bzw. Minimierung von Feldern m¨glich.
o
Einige Beispiele:
Berechnung der Summe der Quadrate der Elemente eines Vektors

fprintf(™\n\nSummenberechnung:\n\n™)
clear;
v = [0:0.1:100];
tic
x = 0;
for i=1:1000
x = x + v(i).^2;
end
toc
Sonstiges 57




tic
y = sum(v.^2);
toc
x
y
input(™Druecke RETURN™)

Berechnung der Fakult¨t
a

fprintf(™\n\nBerechnung der Fakult\"at 100!:\n\n™)
clear
tic
p = 1;
for i=1:100
p = p*i;
end
toc
tic
q = prod(1:100);
toc
p
q
input(™Druecke RETURN™)

Zum Abschluss ein Beispiel aus dem Buch ™MATLAB Guide™ von D. & N.
Higham ( http://www.ma.man.ac.uk/ higham/mg/ ), in dem ein Bifurkations-
diagramm einer Di¬erenzengleichung berechnet wird. Die zugehorigen M-Files
¨
™bif1.m™ (Implementierung mit Schleifen) und ™bif2.m™ (Implementierung mit Vektor-
und Matrix-Funktionen wo immer m¨glich) sind im WWW unter
o
http://www.ma.man.ac.uk/ higham/mg/m¬les.html (Chapter 20) abrufbar.


fprintf(™\n\nBifurkationsdiagramm (bitte etwas Geduld!):\n\n™)
tic
bif1
toc
figure
tic
bif2
toc
58 Sonstiges




3.1.2 Pro¬ler
In diesem Abschnitt veranschaulichen wir einige M¨glichkeiten des MATLAB
o
Pro¬lers, mit dem man detaillierte Auskunft uber die Ausfuhrungsgeschwindig-
¨ ¨
keit von Programmen erhalten kann
Die einfachste Version des Pro¬lers liefert bereits eine Menge von Informatio-
nen. Wir veranschaulichen dies anhand der numerischen Integration.
Einschalten des Pro¬lers
profile on
Ausfuhren des M-Files, das untersucht werden soll
¨
blatt7(1000);
Ausgabe des Pro¬ler-Reports
profile report
input(™Druecke RETURN™)
Der Report wird jetzt in einem Web-Browser angezeigt
Gra¬sche Darstellung einiger Pro¬ler-Daten
profile plot
Die vielleicht etwas uberraschende Erkenntnis hier: Alle drei Integrationsformeln
¨
ben¨tigen fast die gleiche Zeit; obwohl die Formeln fur Milne und Simpson kom-
o ¨
plizierter sind. Der mit Abstand zeitaufw¨ndigste Teil ist die Auswertung der
a
Funktion f(x)=sin(x), die sich in ™inline/subsref™ ™versteckt™.
Abschalten des Pro¬lers
profile off
Loschen der bisher gesammelten Pro¬ler-Daten
¨
profile clear
input(™Druecke RETURN™)
Mit der ™-detail™-Optionen kann man steuern, wie viele Informationen ausgegeben
werden.
Mogliche Optionen:
¨
™mmex™ : Nur Funktionen in M- oder MEX-Files werden ausgegeben (Voreinstel-
lung). Beachte: Viele MATLAB Routinen liegen MATLAB-intern als M-Files vor,
und werden mit dieser Option auch ausgegeben
™builtin™ : Auch fest einprogrammierte MATLAB Routinen werden ausgegeben
™operator™: Auch Operatorauswertungen (+,*,=,==...) werden ausgegeben
Diese Optionen beein¬‚ussen nur den Report, nicht die Gra¬k Beispiele:
Sonstiges 59




profile on -detail builtin
blatt7(1000);
profile report
profile off
profile clear
input(™Druecke RETURN™)

profile on -detail operator
blatt7(1000);
profile report
profile off
profile clear
input(™Druecke RETURN™)

Die Daten, die Pro¬le sammelt, k¨nnen auch direkt ausgelesen werden.
o

profile on
blatt7(1000);
stats = profile(™info™)

Die so erhaltene Variable ™stats™ ist eine sogenannte ™Verbundvariable™ oder ™Struct™,
in der viele Variablen zusammengefasst sind. Die einzelnen Komponenten konnen ¨
uber stats.Komponentenname angesprochen werden. Wir betrachten nun den
¨
Eintrag ™FunctionTable™, in dem die Informationen uber die einzelnen Funktionen
¨
gespeichert sind.

stats.FunctionTable

FunctionTable ist ein Feld von Structs, dessen Eintr¨ge wie ublich als Kompo-
a ¨
nenten angesprochen werden k¨nnen
o

stats.FunctionTable(1)
stats.FunctionTable(2)
stats.FunctionTable(3)
stats.FunctionTable(4)
input(™Druecke RETURN™)

Betrachten wir nun den Eintrag 2 (der zur Funktion trapez.m geh¨rt) genauer.
o
Die Hauptinformation steckt hier in der Komponente ™ExecutedLines™, in der
aufgelistet ist, wie viel Zeit pro Programmzeile verwendet wurde.

stats.FunctionTable(2).ExecutedLines
60 Sonstiges




Die erste Zahl ist die Nummer der Zeile, die zweite gibt an, wie oft diese Zeile
abgearbeitet wurde und die dritte, wieviel Zeit dafur (insgesamt) ben¨tigt wurde.
o
¨
Das Ganze l¨sst sich naturlich auch gra¬sch ausgeben
a ¨

x = stats.FunctionTable(2).ExecutedLines;
plot(x(:,1),x(:,3),™--ks™,™MarkerSize™,20,™MarkerFaceColor™,™k™)
input(™Druecke RETURN™)

profile off
profile clear

Der Pro¬ler kann manchmal uberraschende Informationen liefern. Als Beispiel
¨
betrachten wir Ausgleichsprobleme. Fazit: Durch Betrachten der ™Function De-
tails™ sieht man, dass das Aufstellen der Normalengleichungen die meiste Zeit in
Anspruch nimmt, und nicht (wie man vielleicht erwarten wurde) die Losung des
¨ ¨
linearen Gleichungssystems mit dem Choleski- Verfahren.
Diese Informationen liefern wichtige Hinweise darauf, wo man bei einer Opti-
mierung von M-Files ansetzen sollte.

profile off
profile clear

<<

. 11
( 11 .)