Rumah >pembangunan bahagian belakang >C++ >Mengapakah `cin` C jauh lebih perlahan daripada Input Python dan Bagaimana Ia Boleh Diperbaiki?

Mengapakah `cin` C jauh lebih perlahan daripada Input Python dan Bagaimana Ia Boleh Diperbaiki?

Barbara Streisand
Barbara Streisandasal
2025-01-04 08:04:34649semak imbas

Why is C  's `cin` Significantly Slower than Python's Input, and How Can It Be Improved?

Mengapa Membaca Baris dari stdin Jauh Lebih Lambat dalam C berbanding Python

Semasa membandingkan kelajuan bacaan input dalam Python dan C , diperhatikan bahawa kod C melakukan susunan magnitud lebih perlahan.

Kekurangan cin Penimbalan

Percanggahan ini timbul daripada perbezaan asas dalam tingkah laku lalai. cin dalam C , secara lalai, disegerakkan dengan input/output standard (stdio), menyebabkan ia melepaskan penimbalan input, mengakibatkan pembacaan aksara satu demi satu, proses yang mahal dari segi panggilan sistem.

Penyelesaian: Lumpuhkan Penyegerakan

Untuk meningkatkan prestasi, penyegerakan cin dengan stdio boleh dilumpuhkan dengan menambah baris berikut pada permulaan program:

std::ios_base::sync_with_stdio(false);

Ini membolehkan aliran C menimbal I/O secara bebas, meningkatkan kelajuan bacaan dengan ketara.

Tinjauan straw untuk menggambarkan perbezaannya:

Implementation Lines per second
Python (default) 3,571,428
cin (default/naive) 819,672
cin (no sync) 12,500,000
fgets 14,285,714
wc (unfair comparison) 54,644,808

Jadual ini menunjukkan perbezaan besar dalam kelajuan membaca apabila penyegerakan cin dilumpuhkan.

Atas ialah kandungan terperinci Mengapakah `cin` C jauh lebih perlahan daripada Input Python dan Bagaimana Ia Boleh Diperbaiki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn