|
|
H5read: Unterschiedliche Lesezeiten |
|
Grünschnabel |

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 26.10.2013, 11:58
Titel: H5read: Unterschiedliche Lesezeiten
|
 |
|
 |
|
Hallo Zusammen,
vielleicht könntet Ihr mir bei folgendem Problem helfen.
Mit Hilfe eines Codes möchte ich zwei unterschiedliche Bereichen eines HDF-Files in Matlab laden. Die Teilbereiche werden separat eingelesen und im Anschluss zu einer großen Matrix zusammen gesetzt. Dieser Vorgang funktioniert ohne Fehler. Die verwendeten *.h5 Files sind sehr groß (zwischen 1 und 3 GB)!
Ich nutze dazu die Funktion h5read und verwende folgenden Code:
Meine Frage:
Warum bekomme ich immer so unterschiedliche "Zeiten für das Einlesen" meiner *.h5 Datei? Kann ich hier irgendetwas verbessern? Muss ich das Dokument am Ende wieder schließen (wie z.B. fclose)
Hier mal kurz aufgeführt, wie stark die Zeiten variieren:
1. Durchlauf meines Codes 70 Sekunden (Direkt nach dem Öffnen von Matlab)
2. bis 10. Durchlauf: - ca. 1 - 3 Sekunden
11. Durchlauf: 30 Sekunden
12. Durchlauf: 40 Sekunden
13. Durchlauf: 1 Sekunde
Kann mir jemand helfen?!?
Vielen Dank im Voraus.
Der Grünschnabel
|
|
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 26.10.2013, 12:48
Titel:
|
 |
Hallo Grünschnabel,
ich kenne mich mit hdf Files nicht aus. Aber ein Problem könnte das
am Anfang sein. Das löscht alle Funktionen aus dem Speicher und hat noch andere unschöne Effekte.
Gruß, Kascho
|
|
|
Grünschnabel |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 26.10.2013, 13:00
Titel:
|
 |
Hallo Kascho,
vielen Dank für Deine schnelle Antwort.
Was meinst du genau mit unschönen Effekten?
Meine erten vier Zeilen in meinem Code sehen wie folgt aus:
Mit den Zeilen möchte ich eigentlich erreichen, dass mein belegter Speicher im workspace gelöscht wird um somit eine saubere "Arbeitsgrundlage" für neue Rechendurchläufe zu schaffen.
Ist das nicht richtig?!? Wie geht ihr vor?!?
Hat vielleicht noch jemand eine Idee zu meinem Problem?
Vielen Dank im Voraus,
der Grünschnabel
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 26.10.2013, 13:29
Titel:
|
 |
Es löscht unter anderem auch alle breakpoints. einfach mal in
nachlesen.
Ich nehme meistens entweder nur clear. Oder
Das hat den Vorteil, dass man hier mit "-except" einzelne Variablen behalten kann.
Gruß, Kascho.
|
|
|
Grünschnabel |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 26.10.2013, 13:35
Titel:
|
 |
Vielen Dank für die Antwort, ich werde gleich mal nachlesen.
Aber gibt es vielleicht noch irgendwelche Hinweise oder Kommentare zum h5read Befehl?
Mache ich da was falsch?!?
|
|
|
Grünschnabel |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 80
|
 |
|
 |
Anmeldedatum: 01.10.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: MATLAB R2013a
|
 |
|
|
 |
|
Verfasst am: 27.10.2013, 07:22
Titel:
|
 |
Hallo lieber User,
hat keiner eine Idee zu meinen unterschiedlichen Zeiten die ich für das Einlesen eines HDF-Files benötige?!?
Ich habe überlegt, ob es vielleicht daran liegen könnte, dass ich zwei Bereiche mit h5read einlese und diese später mit vertcat zusammen setze.
Ich habe einfach mal die ganze Matrix mit h5read eingelesen und auch hier erhalte ich unterschiedliche Zeiten für das Einlesen.
Hmm...
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 27.10.2013, 13:01
Titel: Re: H5read: Unterschiedliche Lesezeiten
|
 |
|
 |
|
Hallo Grünschnabel,
Wie Kascho schon schrieb, ist "clear all" eine schlechte Idee: Es löscht alle funktionen aus dem Speicher und das erneute Laden von Der Festplatte benötigt "viel" Zeit. Allerdings heißt "viel" hier etwas von der Größenordnung 1 Sekunde. Mit den 40 Sekunden kann das nicht viel zu tun haben.
Aber wie kommst Du darauf, die Funktion mit dem brutalen Löschen aller Informationen zu starten? Das ist sehr weit verbreiten, und dennoch ist gerade das Löschen aller Breakpoints eine sehr unpraktische Behinderung beim Debuggen. Und da sowohl Programmier-Anfänger als auch -Profis immer mit Bugs kämpfen, ist alles, was das Debuggen behindert immer übel.
Zu gerne würde ich wissen, woher die Mode mit dem "clear all" kommt.
Es kann sehr unterschiedliche Gründe für die Unterschiedlichen Laufzeiten geben. Dass der erste Lauf besonders lange dauert, kann z.B. am Virus-Scanner liegen, der jedes neu geöffnete File erstmal untersucht (testweise diese Files mal auf die White-List setzen), oder am Festplatten-Cache, der die zuletzt benutzten Daten in einem RAM-Cache hält. Der ist zwar üblicherweise keine 3 GB groß, es ist aber trotzdem eine spürbare Beschleunigung.
Das Lesen eines 3 GB-Files kann unterbrochen werden von andern Aktionen auf der Festplatte, Defragmentierer, Prefetch-Caching, Virus-Scanner, Mail-Download, Updates des Betriebssystems...
Hier nur den Matlab-Prozess zu betrachten, bringt keine sinnvolle Einsichten.
Das nächste Problem kann das VERTCAT sein: Wenn Du zwei große Arrays erstellst, müssen diese im RAM abgelegt werden. Für das Zusammengefügte Array muss dann wieder ein neuer großer fortlaufender Bereich im RAM resveriert werden. Wenn dazu zuerst der Speicher aufgeräumt werden muss, braucht das viel Zeit.
Jede Datei, die mit FOPEN geöffnet wurde, sollte unbedingt wieder mit FCLOSE geschlossen werden. H5READ erledigt das aber bereits.
Der Profiler hilft herauszufinden, an welchen Punkten die unterschiedlichen Laufzeiten auftreten. Fragen zur Laufzeit sollten unbedingt per PROFILE untersucht werden.
Gruß, Jan
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 - 2025
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.
|
|