Code beschleunigen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
http://www.gomatlab.de/code-beschleunigen-t238.html
Hallo zusammen,
ich habe ein sehr umfangreiches Programm in Matlab geschrieben und aus Gründen der Übersichtlichkeit ist der Code in viele einzelne M-Files aufgeteilt. Leider ist das Programm noch sehr langsam und ich würde es gern beschleunigen.
Meine Frage deshalb: Bringt es etwas die Codes der einzelnen M-Files in einen "endlos"-Code und ein M-File umzuwandeln? (Geht das überhaupt, wenn ich mit Klassen ("@Ordner") arbeite?
Oder ist es sinnvoller das Programm zu compilieren und wenn ja, wie mache ich das am besten wenn ich ich nicht die Namen aller Files (ca. 300) einzeln angeben will?
wie hier: mcc [-options] mfile1 [mfile2 ... mfileN]
gruß
Fred
|
|
|
|
Hi,
nur ein paar Ideen:
- Code vektorisieren
- Speicher preallokieren
- Prüfen, ob Beschleunigung nötig ist.
Rufst Du die m-Files mehrmal auf? Dann kann es sinnvoll sein,
Funktionen statt einfachen Skripten zu verwenden, denn diese
müssen nur einmal geladen werden.
Ich glaube, es gibt von Mathworks ein tech note
"How do I vectorize my code?"
Da standen ein paar Tricks drin.
Aber 300 m-Files sind ja nicht wenig.
Was machst Du denn da für Berechnungen?
Vielleicht sind die ja einfach langsam.
Mit tic und toc kannst Du feststellen, wie lang
ein Stück Code braucht.
Viele Grüße
|
|
|
|
|
Hi,
noch ein weiterer tip:
benutze den matlab profiler, um eventuelle schwachstellen deines codes zu identifizieren. manchmal kann eine kleine unachtsamkeit/ungeschickte programmierung dazu fuehren, die performance komplett zu ruinieren, das weiss ich aus eigener erfahrung...
Falls bestimmte module schlecht in matlab zu optimieren sind, lohnt es sich eventuell, diese als externe MEX funktion in C zu implementieren.
vg
matthias
|
|
|
|