Rumah >pembangunan bahagian belakang >C++ >Mengapakah `cin` C jauh lebih perlahan daripada Input Python dan Bagaimana Ia Boleh Diperbaiki?
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!