|
LordExcalibur |

Forum-Anfänger
|
 |
Beiträge: 39
|
 |
|
 |
Anmeldedatum: 08.05.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2011, 15:43
Titel: Laufzeit von m-Skripten
|
 |
Hallo,
ich habe 2 Matlab Skripte geschrieben. Dabei wird das Skript 2 aus dem Skript 1 aufgerufen. Skript 2 besteht auf einer for Schleife mit mehreren in der Schleife befindlichen IF Verzweigungen. Die Schleife wird 96 mal durchlaufen. In Skript 1 werden im wesentlichen Matritzenoperationen und eine While Schleife durchgeführt. In der While Schleife wird das Skript 2 aufgerufen.
Nun habe ich folgendes beobachtet:
Rufe ich aus der While Schleife in Skript 1 das Skript 2 auf dauert die Berechnung extrem lange. Kopiere ich hingegen die FOR Schleife aus Skript 2 direkt in Skript 1 wird der Ergebnis in wenigen Sekunden berechnet.
Woran kann das liegen?
Ist beim Aufruf anderer Skripte etwas besonderes zu beachten?
Grüße.
Sebastian
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 22.06.2011, 20:32
Titel: Re: Laufzeit von m-Skripten
|
 |
Hallo LordExcalibur,
Deine Beschreibung reicht nicht, um das Problem zu verstehen.
Bitte poste den relevanten Code.
Gruß, Jan
|
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 22.06.2011, 22:21
Titel:
|
 |
nutze doch einfach mal den Matlabprofiler und gucke was er so sagt was lange dauert
generell kann ich nur von for-Schleifen abraten
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.06.2011, 00:08
Titel:
|
 |
Hallo Martin1986,
Schleifen werden seit Matlab 6.5 von Matlab's JIT-Acceleration sehr effizient verarbeitet. Leider hält sich aber das alte Urteil, dass Schleifen in Matlab generell lahm sind.
Die JIT-Acceleration kann aber nur dann ihr Potential ausspielen, wenn sie alle Berechnungen innerhalb der Schleife beeinflussen kann. Wenn also zwischendurch ein anderes Script aufgerufen wird, sind Seiten-Effekte möglich und die Beschleunigung bricht zusammen. Den gleichen Effekt sieht man, wenn der Profile oder der Debugger aktiviert wird. Das ist natürlich eine große Schwäche für den Profiler, da er die tatsächlichen Laufzeiten extrem verfälschen kann.
Ich poste demnächst ein Beispiel - leider ist der Matkab-Server gerade mal wieder nicht erreichbar...
Gruß, Jan
|
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 23.06.2011, 10:33
Titel:
|
 |
schleifen sind schneller geworden, das stimmt aber ich habe es erst wieder auf der 2010b getestet, da hat mich eine bestimmte for Schleife fast 18 s gekostet die selbe funktion als matrixenoperation nur noch etwa 1,5 s also kann ich das nicht bestädigen aber vll bin ich ja auch nur zu blöde
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.06.2011, 02:25
Titel:
|
 |
Hallo Martin1986,
Es kommt natürlich auf das Beispiel an. Wenn Matlab eine Berechnung direkt an eine Lapack/BLAS-Funktion weiter geben kann, ist eine FOR-Schleife immer langsamer.
Es gibt aber auch Beispiele, bei denen die Vektorisierung langsamer ist als eien FOR-Schleife, z.B. http://www.mathworks.com/matlabcent.....ion-with-vectorized-loops. Dieser Effekt tritt hauptsächlich dann auf, wenn die Vektorisierung das Erstellen großer temporärer Arrays erfordert. Dann wird die meiste Zeit mit Warten auf die Daten aus dem RAM vergeudet und die eigentliche Berechnung dümpelt im Prozessor vor sich hin.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|