Ich habe eine Standalone-Anwendung getestet, die wir in Matlab entwickelt haben, als ich bemerkte, dass die Speicherbelegung laut Windows Task Manager mehrere Male über 16 GB lag. Ich entschied mich dafür, den Profiler von Matlab mit profile -memory on
auf den Skripten hinter der kompilierten Version laufen zu lassen, um zu sehen, wo die Speicherspitzen auftraten, wobei genau die gleiche Eingabe verwendet wurde. Der höchste Spitzenspeicher, der gefunden wurde, war jedoch 2400860,00 Kb oder etwa 1/4 so viel für die Funktion, die im Wesentlichen als main()
des Programms fungiert.
Ich habe mich also gefragt, ob die Leute große Unterschiede bei der Speichernutzung zwischen dem Ausführen eines kompilierten Matlab-Programms und dem Ausführen der ursprünglichen Skripte in Matlab bemerkt haben. Mir ist aufgefallen, dass es in Matlab viel länger dauerte, aber ich dachte mir, dass der Profiler den Überblick über alle Speicherzuweisungen und -zuordnungen behält, anstatt in einen Auslagerungsspeicher auf der Festplatte zu schreiben und zu schreiben.
Um eine schnelle Antwort auf diese Frage zu geben. Ja, MATLAB-kompilierte Anwendungen werden mit mehr Aufwand als MATLAB-Skripts ausgeführt.
Dies liegt daran, dass von MATLAB bereitgestellte Anwendungen eine Version von MATLAB öffnen, die im Speicher namens MCR gespeichert ist. Der MCR läuft mit mehr Overhead als MATLAB.
Eine Sache, die ich in Situationen wie dieser als nützlich empfunden habe, ist, sie neu zu kompilieren und zu sehen, ob das überhaupt hilft. Wenn dies nicht der Fall ist, können Sie versuchen, die Speichernutzung zu verringern, indem Sie Berechnungen in Segmenten ausführen.
Dies könnte für eine bessere Speichernutzung hilfreich sein: Ссылка
Quelle:
Kommentar, wenn Sie Fragen haben.
Tags und Links memory matlab mcc matlab-deployment matlab-compiler