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:
Methode | Ausführung Zeit |
---|---|
scanf() | 6,4 Sekunden |
cin und cout | 24,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:
Methode | Ausfü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:
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