|
Fred |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.09.2007, 15:56
Titel: Code beschleunigen
|
|
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
|
|
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.09.2007, 16:55
Titel:
|
|
Zitat: |
Bringt es etwas die Codes der einzelnen M-Files in einen "endlos"-Code und ein M-File umzuwandeln? |
Nein
Zitat: |
Oder ist es sinnvoller das Programm zu compilieren ... |
Nein
Als erstes mit dem Profiler untersuchen an welchen Stellen Dein Programm die meisste Zeit verbrät. Danach diese M-Files etwas gezielter unter die Lupe nehmen. Ich weiss nicht wie gut Du Dich mit MATLAB auskennst - mag sein, dass nachfolgende Hinweise für Dich nutzlos sind:
Programmierst Du vektoriell oder mit Schleifen (wie die C/C++ Kollegen )? Falls doch nicht vektoriell - üben, üben, üben... das ist der Schlüssel zu der MATLAB Performance...
MfG
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 06.09.2007, 17:06
Titel:
|
|
|
|
|
Ich würde fürs erste auch erstmal die SUche mit dem Profiler empfehlen. IM matlab File-exchange gibt es auch eine Reihe schöner Anleitunge für effiziente schnelle Programmierung mit matlab - allerdings nur auf Englisch.
Ansonsten noch ein Tipp:
tic; meintest.m; toc
Gibt Dir die Zeit, die meintest.m zur Ausführung benötigt - Aber erst beim zweiten Aufruf, beim ersten Aufruf kommt noch die Zeit für die (nur einmalige) Kompilation mit dazu.
Ausser vektoriellen Programmieren fällt mir zum Beschleunigen noch folgendes ein:
lange Berechnungen von Formeln evtl. in maple zusammenfassen -> hat mir schon öfters geholfen.
Benötigte Interpolationen an festen Daten anstelle mit interp(,....'spline') mit der SplineToolbox (falls vorhanden) nur einmal durchführen und ablegen.
Daten einlesen mittels fscanf statt textread.
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.09.2007, 13:01
Titel:
|
|
mit TIC/TOC kriegt man nur die Gesamtzeit für die Ausführung, aber nicht wie diese Zeit sich zusammensetzt.
versucht mal mit:
bzgl. Vektorisierung kannst Du im FileExchange nachschauen - dort gibt es eine Menge an Tip&Tricks... wer sucht der findet...
MfG
|
|
|
|
|
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 - 2024
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.
|
|