|
|
Speicherschonung bei fopen |
|
zyzyx |
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.11.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.05.2009, 20:52
Titel: Speicherschonung bei fopen
|
|
|
|
|
Hallo,
ich habe ein MATLAb Programm geschrieben welches mir erst eine Audiodatei in Frames zerlegt und anschließend aus jedem Frame ca. 60 Merkmale berechnet.
Bisher habe ich die Merkmale nachdem sie in einem Frame berechnet wurden in einer Matrix gespeichert. Was später auffiel ist, dass das 'mitschleppen' dieser Matrix die Geschwindigkeit der Berechnungen, speziell bei sehr großen Audiodateien, redizierte.
Aus diesem Grund wollte ich die berechneten Werte in einer oder mehreren Dateien speichern.
Ich dachte mir das es 2 Möglichkeiten gibt und wüsste gerne welches die effizientere der beiden ist.
1) Am Anfang des Programmes öffne ich eine Datei und speichere in ihr die berechneten Werte. Am Ende des Programmes schliesse ich sie wieder.
oder :
2) Ich Öffne die Datei vor jeder Wertberechnung und schliesse die gleich dannach wieder.
Der erste Fall wäre dem Speichervorgang in der oben beschriebenen Matrix ähnlich und der zweite Fall hat zwar durch das ständige öffnen und schliessen einen höheren Aufwand, dieser ist aber konstant.
Kann mir jemand sagen welcher dieser Wege der effizientere ist, oder ob es vielleicht eine dritte viel besser Möglichkeit gibt?
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2009, 10:00
Titel:
|
|
Hallo,
eine offene Datei verbraucht weder Zeit noch Speicher (außer einer Handvoll Bytes), daher ist 1. vorzuziehen.
Titus
|
|
|
zyzyx |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.11.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2009, 13:46
Titel:
|
|
Und wie sieht es aus, wenn in diese offene Datei immer mehr Daten geschrieben werden? Das geschieht doch sicherlich im Hauptspeicher, oder werden die neuen Daten die in die Datei kommen sofort in die Datei auf der Festplatte geschrieben?
|
|
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 28.10.2009, 11:00
Titel:
|
|
Wenn es wirklich in die Datei auf der Festplatte geschrieben wird ist dem Dateisystem überlassen. Solange nur geschrieben und nicht zwischendrin ausgelesen wird, ist es für die Matlab-Seite unerheblich, ob die Daten schon geschrieben oder noch zwischenge"cached" sind.
Grüße
Nicolas
_________________
--
The programmer suggested it.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 08.07.2010, 21:35
Titel:
|
|
Hallo zyzyx,
Du schreibst: "Was später auffiel ist, dass das 'mitschleppen' dieser Matrix die Geschwindigkeit der Berechnungen, speziell bei sehr großen Audiodateien, redizierte."
Wie groß sind die Datein und was bedeutet "Mitschleppen"?
Vergrößerst Du eine Matrix in jedem Schritt? Das wäre in der Tat sehr langsam und die Pre-allocation der Matrix wäre eine einfache Abhilfe.
Kannst Du die entsprechenden Codezeilen posten?
Grundsätzlich ist das Arbeiten im Speicher viel schneller als auf der Festplatte. Das ändert sich erst, wenn die Arrays den gesamten Hauptspeicher füllen.
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 - 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.
|
|