„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > scanf() vs. cin: Was ist schneller für C++-Eingaben?

scanf() vs. cin: Was ist schneller für C++-Eingaben?

Veröffentlicht am 23.11.2024
Durchsuche:278

scanf() vs. cin: Which is Faster for C   Input?

Geschwindigkeitsvergleich: scanf() vs. cin

Frage:

Ist es wahr? dass die Verwendung von scanf() in C-Programmen schneller ist als die Verwendung von cin?

Antwort:

Ja, scanf() ist tatsächlich schneller als cin in C, wie Benchmarking-Ergebnisse zeigen.

Um das durchzuführen Test wurde ein einfaches Programm geschrieben, um eine große Liste von Zahlen zu lesen und ihren XOR-Wert zu berechnen. Das Programm wurde sowohl mit stdios scanf() als auch mit iostreams cin und cout implementiert.

Ergebnisse:

MethodeAusführung Zeit
scanf()6,4 Sekunden
cin und cout24,3 Sekunden

Dieser erhebliche Geschwindigkeitsunterschied ist in erster Linie wird dem Overhead der iostream-Funktionen bei der Aufrechterhaltung der Synchronisierung mit den stdio-Funktionen von C zugeschrieben.

Optimierung der Leistung von cin:

Allerdings durch Deaktivieren der Synchronisierung mit std::ios:: sync_with_stdio(false), die iostream-Version kann vergleichbare Ergebnisse erzielen Leistung:

MethodeAusführungszeit
cin und cout (mit sync_with_stdio (falsch))5.5 Sekunden

Mit dieser Optimierung übertrifft iostream scanf() und wird zur schnellsten Methode.

Fazit:

Obwohl scanf() von Natur aus schneller ist als cin, wird seine Verwendung in C-Programmen im Allgemeinen nicht empfohlen, weil:

  • Ja nicht typsicher, im Gegensatz zu cin.
  • Es führt zu Inkonsistenzen im Programmierstil und vermischt C-Stil- und C-Stil-Code.
  • iostream bietet eine modernere und effizientere Möglichkeit für die Eingabe und Ausgabe Vorgänge, insbesondere wenn sie durch Deaktivieren der Synchronisierung optimiert werden.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3