So optimieren Sie die IOStream-Leistung in C
C-Benutzer bevorzugen oft die printf/scanf-Funktionsfamilie gegenüber C IOStreams, trotz der Schnittstelle der letzteren Vorteile. Als Hauptgrund für diese Präferenz werden häufig Leistungsbedenken genannt.
Pufferung
Eine Vergrößerung der Puffergröße des zugrunde liegenden Streambuf kann die Leistung erheblich verbessern, indem Festplattenzugriffe und Systemzugriffe reduziert werden Anrufe. Dies geschieht mit:
char Buffer[N]; std::ifstream file("file.txt"); file.rdbuf()->pubsetbuf(Buffer, N);
Gebietsschema-Handhabung
Gebietsschemata können aufgrund von Zeichenkonvertierung, Filterung und dynamischem Versand zu Leistungseinbußen führen. Das Festlegen des Gebietsschemas auf das Standard-C-Gebietsschema, das diese Vorgänge deaktiviert, kann die Leistung verbessern:
std::locale::global(std::locale("C"));
Synchronisierung
Synchronisierung mit C stdio (std::ios_base: :sync_with_stdio(false)) bietet keine erkennbaren Leistungsvorteile.
Messungen
Benchmarking mit verschiedenen Compilern und Plattformen zeigt unterschiedliche Ergebnisse:
Das obige ist der detaillierte Inhalt vonIst die Leistung von C IOStream tatsächlich langsamer als printf/scanf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!