Heim > Backend-Entwicklung > C++ > Warum liest C „stdin' so viel langsamer als Python?

Warum liest C „stdin' so viel langsamer als Python?

Linda Hamilton
Freigeben: 2025-01-04 17:11:41
Original
217 Leute haben es durchsucht

Why is C   `stdin` Reading So Much Slower Than Python's?

Verstehen der langsamen Leistung des Stdin-Lesens in C im Vergleich zu Python

In diesem Artikel befassen wir uns mit den Gründen, warum Zeilen aus der Standardeingabe (stdin) in C gelesen werden ist deutlich langsamer als sein Python-Gegenstück.

Beim Vergleich der folgenden C- und Python-Codes:

C :

getline(cin, input_line);
Nach dem Login kopieren

Python:

for line in sys.stdin:
Nach dem Login kopieren

Überraschende Ergebnisse zeigten, dass Python C um eine Größenordnung übertraf. Diese Diskrepanz kann auf unterschiedliche Standardeinstellungen in C zurückgeführt werden.

Standardmäßig ist der Cin-Stream in C mit dem Standard-I/O-System (stdio) synchronisiert, wodurch eine Eingabepufferung vermieden wird. Dies bedeutet, dass cin die Eingabe Zeichen für Zeichen liest, anstatt größere Blöcke zu verwenden, was zu zahlreichen teuren Systemaufrufen führt.

Um diese Einschränkung zu beheben, können Sie diese Synchronisierung deaktivieren, indem Sie die folgende Anweisung am Anfang Ihrer Hauptdatei hinzufügen Funktion:

std::ios_base::sync_with_stdio(false);
Nach dem Login kopieren

Mit dieser Änderung kann cin seine Eingaben unabhängig puffern, was zu erheblichen Leistungssteigerungen führt.

Zusätzlich können Sie die verwenden fgets-Funktion, die eine effizientere und direktere Möglichkeit zum Lesen von Eingabezeilen bietet, ohne den Mehraufwand der Synchronisierung zu verursachen.

Zusammenfassung:

Die Standardsynchronisierungseinstellungen in C führen zu mehr Systemaufrufe für die Pufferverwaltung, wodurch es beim Lesen von Standardeingaben langsamer als Python wird. Um die Leistung zu verbessern, wird empfohlen, diese Synchronisierung zu deaktivieren oder die fgets-Funktion zu verwenden.

Das obige ist der detaillierte Inhalt vonWarum liest C „stdin' so viel langsamer als Python?. 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