fstream vs. FILE Geschwindigkeit
-
Hallo,
da ich sehr große Dateien (größer 30 GB) binär einlesen, verarbeiten und wieder raus schreiben möchte hätte ich eine Frage bezüglich dem Dateizugriff.
Prinzipiell stellt sich die Frage was schneller ist. C++ fstream oder ANSI-C FILE.
Falls jemand Erfahrungen, Vor- oder Nachteile beider Varianten hat / kennt wäre ich für Antworten / Tipps dankbar.
Gruß
MatzeGTO
-
Generell solltest du in C++ eher die Mittel aus der C++-Standardbibliotheken benutzen, also hier
std::fstream. Performancemässig sollte das nicht wirklich einen Unterschied machen, aber das merkst du meistens erst nach Zeitmessungen und Profiling.
-
Hallo
fstream ist meines erachtens besser für sowas.
way
-
-
Hem... bei 30 Gbyte und mehr, wirst du sowohl mit fstream als auch FILE Probleme bekommen, wenn diese nur 32 bit-Adressen unterstützten. Hat aber nichts mit Performance zu tun. Bei solchen Dateigrößen wird man wahrscheinlich die nativen Filesystem-APIs nutzen müssen.
-
Ich würde in diesem Fall weder fstream noch FILE verwenden, sondern memory-mapped io, kurz: mmio
Einfach mal nach "mmio" googeln, kann sogar sein, dass du bei boost eine plattformunabhängige Lösung findest (bin mir sogar recht sicher davon gehört zu haben).
-
Die Applikation soll später auf openSuse x86_64 laufen. (Das ist auch mein Entwicklungsrechner momentan).
Da sollte ich doch mit Dateigrößen > 2^32 bit kein Problem haben??
-
Mach das was Badestrand geschrieben hat: abstrahieren.
mmio ist oft NICHT ideal für grosse Datenmengen.