Heim > Backend-Entwicklung > C++ > Ist die Leistung von C IOStream tatsächlich langsamer als printf/scanf?

Ist die Leistung von C IOStream tatsächlich langsamer als printf/scanf?

Barbara Streisand
Freigeben: 2024-11-07 00:57:02
Original
956 Leute haben es durchsucht

Is C   IOStream Performance Actually Slower Than printf/scanf?

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);
Nach dem Login kopieren

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"));
Nach dem Login kopieren

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:

  • g 3.4.2 auf SUSE 10p3: ~20 % Verlangsamung für C
  • g 4.7.2 auf Ubuntu 11.10: C 25 % schneller
  • g 4.4.5 auf Ubuntu Linux 10.10: C 17 % schneller
  • g auf macOS variieren je nach spezifischen Implementierungsimplementierungen. Daher gibt es keine universelle Lösung zur plattformübergreifenden Optimierung von IOStreams.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage