Rumah >pembangunan bahagian belakang >C++ >Patutkah Saya Menggunakan `ios_base::sync_with_stdio(false);` dan `cin.tie(NULL);` Bersama-sama atau Berasingan untuk Prestasi C I/O Optimum?
Kepentingan ios_base::sync_with_stdio(false); cin.tie(NULL);
Dua penyataan dalam program C ini mempunyai implikasi yang ketara, walaupun ia mungkin tidak meningkatkan prestasi secara langsung.
ios_base::sync_with_stdio(false) ;
Melumpuhkan penyegerakan antara strim standard C dan C. Ini membolehkan aliran C mempunyai penimbal bebas, yang berpotensi membawa kepada operasi I/O yang lebih cekap. Walau bagaimanapun, ia boleh mengakibatkan tingkah laku yang tidak dijangka apabila mencampurkan C dan C I/O.
cin.tie(NULL);
Menyahikat cin dari cout. Secara lalai, aliran terikat memastikan bahawa satu aliran disiram sebelum beroperasi pada yang lain. Melumpuhkan ini memastikan bahawa operasi cin tidak menunggu cout disiram, mengurangkan kependaman I/O. Walau bagaimanapun, ia memerlukan curahan cout secara manual apabila memaparkan maklumat.
Bersama atau Berpisah?
Perintah C dan C serentak
Apabila ios_base::sync_with_stdio(false); ditetapkan, mencampurkan arahan gaya C (cth., scanf) dan C -style (cth., cout) boleh menyebabkan masalah. Ini kerana fungsi C I/O mengharapkan aliran yang disegerakkan, yang mungkin tidak berlaku selepas menetapkan sync_with_stdio(false).
Contoh CodeChef
Dalam penyelesaian CodeChef yang disediakan, menggunakan scanf/printf dengan sync_with_stdio(true) boleh menyebabkan ralat kerana scanf menjangkakan strim disegerakkan, yang dilumpuhkan kerana ios_base::sync_with_stdio(false);.
Atas ialah kandungan terperinci Patutkah Saya Menggunakan `ios_base::sync_with_stdio(false);` dan `cin.tie(NULL);` Bersama-sama atau Berasingan untuk Prestasi C I/O Optimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!