WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Laufzeit von m-Skripten

 

LordExcalibur
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 15:43     Titel: Laufzeit von m-Skripten
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.06.2011, 20:32     Titel: Re: Laufzeit von m-Skripten
  Antworten mit Zitat      
Hallo LordExcalibur,

Deine Beschreibung reicht nicht, um das Problem zu verstehen.
Bitte poste den relevanten Code.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 22.06.2011, 22:21     Titel:
  Antworten mit Zitat      
nutze doch einfach mal den Matlabprofiler Wink und gucke was er so sagt was lange dauert Wink

generell kann ich nur von for-Schleifen abraten Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.06.2011, 00:08     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 23.06.2011, 10:33     Titel:
  Antworten mit Zitat      
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 Wink also kann ich das nicht bestädigen Wink aber vll bin ich ja auch nur zu blöde
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.06.2011, 02:25     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.