|
|
Laufzeit einer Funktion unklar |
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 16.06.2013, 14:43
Titel: Laufzeit einer Funktion unklar
|
 |
Hallo,
ich übergebe an eine Funktion eine Matrix, berechne in der Funktion Zeilen und Spalten-Werte (identisch) der s-ten Zeile/Spalte und schreibe diese Werte in die s-te Zeile und Spalte rein. Dabei braucht die Funktion 99% der Zeit, um in die s-Te Zeile zu schreiben. Mir ist unklar, wieso und ich würde das gerne beschleunigen.
Für Hilfe wäre ich dankbar.
Aufruf zum Beispiel über:
Habe ich jedoch die Funktion im selben m-File, so ist auch in die Zeile schreiben sehr schnell, z.B. so:
Das ist sicher irgendetwas Grundlegendes, dass im ersten Fall eine Kopie der Matrix A erstellt werden muss. Wenn die Kopie dann angelegt ist, ist auch das Schreiben in die Spalte schnell erledigt. Wie kann ich das umgehen?
Viele Grüße,
Nras
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.06.2013, 15:03
Titel:
|
 |
Hallo,
ich weiß nicht, welche Zeitmessungen du nun genau vergleichst.
Ich vermute jedoch, dass du bei der schnelleren Variante von In-Place Optimization profitierst:
http://blogs.mathworks.com/loren/20.....place-operations-on-data/
Die Voraussetzung wäre hier nicht, dass die Funktion in der selben Datei steht, sondern dass die Funktion von einer anderen Funktion (also nicht aus einem Skript oder vom Command Window aus) aufgerufen wird.
Grüße,
Harald
|
|
|
Nras |
Themenstarter

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 16.06.2013, 15:28
Titel:
|
 |
Hallo,
die Zeiten, auf die ich mich beziehe, habe ich aus dem profiler herausgelesen.
Für In-Place Operationen sollte, wenn ich das korrekt lese, der Name der Ausgabevariable gleich dem Namen der Eingabevariablen sein. Das ist bei mir der Fall, denn beides heißt A.
Zitat: |
function x = myfuncIP(x)
x = sin(2*x.^2+3*x+4);
As you can see, the two myfunc functions differ. The in-place version has a return argument with the same name as one of the input arguments, in this case, x. |
Und ein kleiner Test zeigt, dass Du recht hast. Ich habe die Funktion bisher von einem Skript aus aufgerufen, dann ist es langsam (insgesamt 13 Sekunden). Wenn ich die Funktion von einer Funktion aus aufrufe, ist es schnell (weniger als 0.05 Sekunden).
Dann bleibe ich wohl bei der Funktionsvariante - oder gibt es einen Weg, das von einem Skript aus aufzurufen, sodass es dennoch schnell rechnet?
Danke und viele Grüße,
Nras.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.06.2013, 18:47
Titel:
|
 |
Hallo,
ja, eine Anforderung hast du erfüllt. Die zweite steht direkt darunter:
Zitat: |
The second important idea required to take advantage of in-place computation is that the in-place function must itself be called from another function, as I've done with inplaceTest. |
Zitat: |
Dann bleibe ich wohl bei der Funktionsvariante - oder gibt es einen Weg, das von einem Skript aus aufzurufen, sodass es dennoch schnell rechnet? |
Nicht dass ich wüsste.
Grüße,
Harald
|
|
|
|
|
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.
|
|