Viel Profiling zeigt, dass C ++ - Streams nicht die beste Methode für die Manipulation von Dateien oder Textfolgen sind, wenn Leistung (Geschwindigkeit) benötigt wird. Dennoch sind die Standard-Streams eine gute Möglichkeit, Dinge typsicher zu halten.
Nach dem, was ich gelesen habe, ist das meiste Problem, weil Stream-Implementierungen 1) viele kleine Objekte erstellen / kopieren müssen 2) arnt vollständig generisch (char und wchar nicht auf die gleiche Weise verwalten?) usw.
Wie auch immer, ich dachte, dass C ++ 0x es den Implementierern erlauben könnte, zumindest die Erstellung / Kopie von Objekten zu beschränken und vielleicht andere Leistungsverbesserungen zu ermöglichen, die es vielleicht erlauben, die printf () Leistung zu erreichen? / p>
Gibt es unmittelbare Auswirkungen? Oder müssen wir auf neue Implementierungen warten? Oder brauchen wir noch eine neue (STL-ähnliche) Stream-Bibliothek?
Sie könnten an einigen der Leistungsvergleiche in meine Frage hier interessiert sein. Selbst die Funktionen auf der untersten Ebene in der C ++ - Standardbibliotheks-Datenstrom-API sind unter gewöhnlichen Implementierungen unglaublich langsam, und der Quellcode von z.B. Visual C ++ 's stringbuf
Klasse, ich sehe keine Kopie von kleinen temporären Objekten. Daher werden rvalue-Referenzen wahrscheinlich nicht viel helfen.
AFAICT, der Hauptgrund für die Langsamkeit von C ++ - Iostreams ist, dass Bibliotheksentwickler mit einer Denkweise beschäftigt sind, dass I / O der Flaschenhals ist, also macht es keinen Sinn, sich über die Leistung der I / O-Bibliothek Sorgen zu machen. Aber I / O ist entschieden nicht der Flaschenhals.