Datei effizient einlesen
-
N'abend zusammen, direkt zu meiner Frage:
Was ist sinnvoller:
(a) eine Datei (z.B. Bild: IFF) komplett einlesen und dann im Mem auseinanderpflücken
(b) die Datei blockweise mit "fread" einlesen und direkt in entsprehende Variablen füllen?
Ich vermute, dass (a) schneller und (b) platzsparender ist.Welche Kriterien gibt es sonst, was ist Eure Empfehlung?
Grüße
-
Empfehlung: unmittelbar die Variablen einlesen, wie Du sie später im Programm benötigst. Benutze std::istream und schreibe Dir ggf. einen eigenen Streaming-Operator für Deine Klasse oder Struktur.
Wie ist das Format Deiner Datei? und welche Variablen brauchst Du später im Programm?
Gruß
Werner
-
Meinst du das Interchange File Format (Amiga)?
Dieses ist ja in sog. Chunks aufgeteilt, welche du entsprechend parsen müßtest
("ILBM", "BMHD", "BODY" etc.).Wenn du wirklich effizient die Datei einladen willst, dann würde ich die gesamte Datei ungepuffert einlesen und im Speicher dann bearbeiten.
Wenn das Bild noch mit RLE komprimiert ist, mußt du es ja eh noch dekomprimieren. Und je nach Farbtiefe entsprechend behandeln.
Zusätzlich mußt du noch beachten, daß die Daten im Big-Endian geschrieben sind, d.h. evtl. die Bytes swappen.Ist dein Programm Open-Source? Wenn ja, dann würde mich das Endergebnis interessieren (da ich selber einen Wrapper für eine beim Amiga verwendete Library unter Windows implementiert habe - jedoch fehlt mir noch das Lesen und Schreiben von IFF-ILBM Dateien -)
-
das ist genau was ich erwartet hatte: geteilte Meinungen

Th schrieb:
Meinst du das Interchange File Format (Amiga)?
ja, das.
Ist dein Programm Open-Source? Wenn ja, dann würde mich das Endergebnis interessieren (da ich selber einen Wrapper für eine beim Amiga verwendete Library unter Windows implementiert habe - jedoch fehlt mir noch das Lesen und Schreiben von IFF-ILBM Dateien -)
Vielleicht gebe ich es 'raus. Muss noch etwas den Code aufräumen.
Beim Iff-Reader habe ich die Daten schrittweise eingelesen, jetzt schreibe ich einen mod (Soundtracker) reader, so kam die Frage nach der Lesart auf.
-
Hi, ich habe den IFF-Reader auf Google-Code gestellt:
-
Hi kerm1t2,
ich hatte gehofft, du hättest einen C++ Source Code erstellt, da du ja hier im C++ Forum gepostet hast (denn die C-Sourcen habe ich noch von meinem Amiga-Projekt).
-
Oh stimmt, aber das Umschreiben sollte ja eine Sache von nur kurzer Dauer sein :p