WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Speicherschonung bei fopen

 

zyzyx
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2009, 20:52     Titel: Speicherschonung bei fopen
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 14.05.2009, 10:00     Titel:
  Antworten mit Zitat      
Hallo,

eine offene Datei verbraucht weder Zeit noch Speicher (außer einer Handvoll Bytes), daher ist 1. vorzuziehen.

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
zyzyx
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2009, 13:46     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 28.10.2009, 11:00     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.07.2010, 21:35     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.