Schreibt der C-Standard eine langsame Leistung für iostreams vor oder sind Compiler dafür verantwortlich?
Während der C-Standard die Anforderungen für iostreams umreißt, ist er es verlangt keine schlechte Leistung. Wie aus dem Problem hervorgeht, gab es jedoch Bedenken, dass bestimmte Implementierungen von iostreams in der Praxis eine suboptimale Leistung aufweisen könnten.
Laut dem Technical Report on C Performance von 2006 erfordern die Spezifikationen des Standards für iostreams nicht zwangsläufig ineffiziente Implementierungen . Dies deutet darauf hin, dass Vorverarbeitung und optimierte Verknüpfungstechniken viele Leistungsprobleme lösen können.
Die im Problem dargestellten Profilierungsergebnisse zeigen, dass ein erheblicher Teil der Zeit in xsputn innerhalb der std::basic_streambuf-Bibliothek aufgewendet wird. Diese Funktion übernimmt das eigentliche Kopieren von Daten in den Stream-Puffer. Es wird wiederholt aufgerufen, wenn kleine Datenblöcke geschrieben werden, was zu einem erheblichen Overhead führt.
Das Problem zeigt jedoch auch, dass die Leistungseinbußen von iostreams beim Umgang mit größeren Datenblöcken vergleichsweise vernachlässigbar sind. Dies deutet darauf hin, dass die wahrgenommene Langsamkeit in Szenarien mit häufigen kleinen Schreibvorgängen verstärkt werden kann.
Zusammenfassend lässt sich sagen, dass der C-Standard zwar keine schlechte Leistung für iostreams verlangt, einige Implementierungen die Vorverarbeitungs- und Verknüpfungsaspekte jedoch möglicherweise nicht vollständig wie empfohlen optimieren im Technischen Bericht. Daher können die beobachteten Leistungsunterschiede zwischen iostreams und manuellen Pufferverwaltungstechniken vom jeweiligen Compiler und der Art der Datenoperationen abhängen.
Das obige ist der detaillierte Inhalt vonIst die langsame Leistung von iostreams ein C-Standard-Problem oder ein Compiler-Implementierungsproblem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!