Rumah > pembangunan bahagian belakang > C++ > Mengapa C `stdin` Membaca Jauh Lebih Lambat Daripada Python?

Mengapa C `stdin` Membaca Jauh Lebih Lambat Daripada Python?

Linda Hamilton
Lepaskan: 2025-01-04 17:11:41
asal
217 orang telah melayarinya

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

Memahami Prestasi Perlahan Pembacaan Stdin dalam C Berbanding Python

Dalam artikel ini, kami menyelidiki sebab membaca baris daripada input standard (stdin) dalam C berprestasi jauh lebih perlahan daripada rakan Pythonnya.

Apabila membandingkan C dan Python berikut kod:

C :

getline(cin, input_line);
Salin selepas log masuk

Python:

for line in sys.stdin:
Salin selepas log masuk

Hasil yang mengejutkan muncul, dengan Python mengatasi prestasi C mengikut urutan magnitud. Percanggahan ini boleh dikaitkan dengan tetapan lalai yang berbeza dalam C .

Secara lalai, strim cin dalam C disegerakkan dengan sistem I/O standard (stdio), yang menyebabkannya mengelakkan penimbalan input. Ini bermakna cin akan membaca aksara input mengikut aksara dan bukannya menggunakan ketulan yang lebih besar, mengakibatkan banyak panggilan sistem yang mahal.

Untuk menangani had ini, anda boleh melumpuhkan penyegerakan ini dengan menambahkan pernyataan berikut pada permulaan utama anda fungsi:

std::ios_base::sync_with_stdio(false);
Salin selepas log masuk

Dengan pengubahsuaian ini, cin akan dibenarkan untuk menimbal inputnya secara bebas, yang membawa kepada prestasi yang ketara keuntungan.

Selain itu, anda boleh menggunakan fungsi fgets, yang menyediakan cara yang lebih cekap dan langsung untuk membaca baris input tanpa menanggung overhed penyegerakan.

Ringkasan:

Tetapan penyegerakan lalai dalam C menghasilkan lebih banyak panggilan sistem untuk pengurusan penimbal, menjadikannya lebih perlahan daripada Python untuk membaca input stdin. Untuk meningkatkan prestasi, adalah disyorkan untuk melumpuhkan penyegerakan ini atau menggunakan fungsi fgets.

Atas ialah kandungan terperinci Mengapa C `stdin` Membaca Jauh Lebih Lambat Daripada Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan