|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 04.08.2012, 09:09
Titel: code beschleunigen
|
 |
hallo jungs und mädels. ich brauch mal eure hilfe bei der beschleunigung eines simplen codes.
durch die nutzung von parfor hab ich schon ca 70% geschwindigkeit gewonnen. mir fällt grade aber nix ein was ich noch machen kann. vieleicht hat von euch ja jemand eine idee.
schonmal danke für eure mühe
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.08.2012, 16:04
Titel:
|
 |
Hallo,
ich sehe keine einfache Möglichkeit, hier viel rauszuholen.
Ansonsten sehe ich im wesentlichen drei Ansätze:
1) MEX-Funktion generieren mit MATLAB Coder. Wenn der MATLAB-Code keine dafür nicht zulässigen Konstrukte verwendet (und danach sieht es mir nicht aus), dürfte der Aufwand recht gering sein.
http://www.mathworks.de/products/matlab-coder/
2) Vektorisierung. Ist hier nicht ganz einfach, aber ich könnte mir das prinzipiell z.B. so vorstellen: statt einer Zufallszahl wird ein Vektor von Zufallszahlen generiert, z.B. immer 10000 Zufallszahlen auf einmal oder (zunächst vielleicht in der Handhabung einfacher) soviele Zufallszahlen, wie man mindestens Schritte braucht, um zur nähergelegenen Grenze zu gelangen.
Das Errechnen von swmax wird dann eine Denksportaufgabe werden, es sollte jedoch die Mühe wert sein.
Grüße,
Harald
|
|
|
Winkow |
Themenstarter

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 04.08.2012, 17:37
Titel:
|
 |
vielen dank. hab mir schon gedacht das man nicht einfach viel rausholen kann.. code is ja recht simpel. das mit der mex funktion guck ich mir mal an danke
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.08.2012, 00:02
Titel: Re: code beschleunigen
|
 |
Hallo Winkow,
Dein Code erzeugt einige MLint Warnungen. Die würde ich unbedingt beachten.
Zu meiner Verblüffung wird der Code, zumindest wenn ich ihn in einem einzelnen Thread laufen lasse, 100 mal schneller, wenn ich folgendes ersetze:
Zudem wird der Code um 10% schneller, wenn man statt "swmax(k)" und "n(k)" lokale Variablen wie "swmaxk" und "nk" verwendet und sie erst nach der Schleife in das Feld schreibt. Das könnte allerdings bei PARFOR anders sein - ich habe die Parallel Processing Toolbox nicht.
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.
|
|