MATLAB Performance
So optimieren Sie die Leistung Ihres MATLAB Programmcodes
So optimieren Sie die Leistung Ihres MATLAB Programmcodes
Die in R2015a eingeführte MATLAB®-Ausführungsengine beschleunigt den gesamten MATLAB Programmcode mithilfe von JIT-Kompilierung. Die JIT-Kompilierung erzeugt nativen, für Ihren MATLAB Programmcode sowie für bestimmte Hardware optimierten Code auf Maschinenebene. Die Architektur der Ausführungsengine ermöglicht mit jeder neuen Version weitere Optimierungen, darunter schnellere Aufrufe eingebauter Funktionen und schnellere Indizierungsoperationen. Zudem verfügen viele Kernfunktionen von MATLAB implizit über Multithreading, was die Leistung verbessert.
Die Leistung von MATLAB bemisst sich anhand einer Reihe von Benchmarks, die sowohl Vorgänge einzelner Units als auch komplette Anwendungen abdecken und reale Anwender-Workflows wiedergeben. Diese Benchmarks werden während eines MATLAB-Release-Zyklus mehrfach auf verschiedenen Hardware- und Betriebssystemen ausgeführt, um neue Optimierungen zu validieren, Leistungsabfälle zu erkennen und zu beheben sowie betriebssystemspezifische Probleme zu identifizieren.
Mehr über spezifische Leistungsverbesserungen erfahren Sie in den MATLAB-Versionshinweisen. Seit der Version MATLAB R2019b enthalten die Versionshinweise auch gemessene Verbesserungen der Ausführungszeit im Vergleich zu früheren MATLAB-Versionen.
Der erste Schritt zu besserer Codeleistung besteht im Erkennen von Engpässen. Zum Beispiel können Sie:
tic
, toc
und timeit
messen
mit dem MATLAB Profiler erkennen, welche Teile Ihres Programms am längsten zur Ausführung benötigenWenn Sie Engpässe in Ihrem Code identifiziert haben, lässt er sich oft durch bekannte Programmierpraktiken beschleunigen. Zwei der gängigsten Techniken sind die Array-Vorbelegung und die Vektorisierung. Vorbelegung kann die Leistung verbessern, indem dynamische Speicherzuweisung vermieden wird. Mit Vektorisierung vermeiden Sie Schleifen, indem alle Elemente eines Vektors mit einem einzigen Befehl bearbeitet werden. In Kombination können diese Techniken den Code um mehrere Größenordnungen beschleunigen.
Bei Bedarf können Sie die Leistung steigern, indem Sie rechenintensive Teile Ihrer Anwendung in einer kompilierten Sprache schreiben. In MATLAB lässt sich mit MEX-Funktionen leistungsstarker C, C++ oder Fortran-Code aufrufen, genau wie die in MATLAB integrierten Funktionen. Mit MATLAB Coder™ können Sie Ihren MATLAB Programmcode automatisch in MEX-Dateien umwandeln, die unter Umständen viel schneller laufen.
Rechen- oder datenintensive Probleme lösen Sie, indem Sie mit Parallel Computing explizit auf all Ihre Hardwareressourcen zugreifen. Mit verschiedenen Funktionen lässt sich auf mehrere Prozesse, Threads und Grafikkarten skalieren – und das mit dem vertrauten und benutzerfreundlichen System von MATLAB. Sie können dies auf einer einzigen Maschine entwickeln und ausführen und dann Ihre Ausführung auf einen Compute-Cluster oder eine Cloud skalieren, ohne neu programmieren zu müssen.
Weitere Informationen