Ich möchte eine scheinbar einfache Frage stellen, dass ich die Antwort nirgendwo finden kann. Gibt es einen FAST modernen Algorithmus für die Dateieingabe und/oder -ausgabe, der mit allen standardkonformen C++ - Compilern kompiliert werden kann und für alle Betriebssysteme ohne die Notwendigkeit externer Bibliotheken funktioniert?Fast plattformübergreifender Algorithmus zum Lesen/Schreiben von Dateien in C++
- ich habe festgestellt, dass der schnellste Weg, Memory-Mapped-Dateien zu verwenden, aber das geht nicht, weil wir das gleiche Stück Code arbeitet auf allen Plattformen wollen
- wir nicht apis wie Win32-API verwenden können, Ursache, dass es plattformspezifische
- ich mag nicht, c verwenden, machen wird, ich will der Algorithmus nur reiner C++ Code mit stl sein, wenn möglich, nicht einig hässlich c mit vermischtem asm Hack/Trick
- Frameworks oder extern Bibliotheken, die nicht in standart C++ gehören, sollten nicht wie wxWidgets, Qt, MFC usw. verwendet werden.
- Das große empasis dieser ganzen Frage ist, dass der Algorithmus als FAST wie möglich ist, etwas entlang der Linien von der Geschwindigkeit mit Memory-Mapped-Dateien zu tun, noch schneller groß sein würde, aber ich weiß, das ist nicht möglich
Hast du jemals etwas so Verrücktes gesehen, das jemand außer mir erforscht hat? Ist ein solcher Algorithmus überhaupt möglich?
Vielen Dank für alle Empfehlungen
Einverstanden. Die einzige C++ - Standarddatei-E/A ist die aus der Standardbibliothek, d. Header-Datei '' oder ''. Wenn Sie schnelle Dateiein- und -ausgänge wünschen, ist das Wichtigste, ** Dateien nicht Byte für Byte zu lesen/schreiben, sondern große Blöcke auf einmal zu lesen/schreiben. –
stakx
kann die gesamte Datei auf einmal mit iostream gelesen werden? Würde das Leistungsvorsprung bieten, was ich nicht denke? ist nicht cstdio a c header? – user258883
Das Lesen der gesamten Datei auf einmal ist immer noch langsamer als das Zuordnen in den Speicher. –