Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengoptimumkan Tulisan Fail Perduaan C untuk Prestasi SSD Maksimum?
Menulis Penampan Besar ke Fail Binari dalam C : Mengoptimumkan Prestasi
Soalan Asal:
Apabila cuba menulis sejumlah besar data (80GB) ke SSD, kod C yang disediakan menggunakan std::fstream mencapai kelajuan kira-kira 20MB/s, jauh lebih perlahan daripada jangkaan kadar pemindahan SSD. Soalan mencari kaedah untuk mengoptimumkan proses penulisan.
Penyelesaian:
Pilihan 1: Menggunakan std::fstream dengan sync_with_stdio(false)
Pendekatan ini menggunakan std::fstream dengan bendera sync_with_stdio(false), yang melumpuhkan penyegerakan antara aliran C dan C I/O. Dengan menyahganding strim, ia meningkatkan prestasi pada sesetengah sistem dengan mengurangkan overhed pemformatan dan pembilasan data.
Pilihan 2: Memanfaatkan Fungsi I/O Standard C
Ini pilihan menggunakan fungsi I/O standard C tahap rendah (fopen, fwrite, dan fclose) untuk menulis data ke fail binari. C I/O beroperasi pada tahap yang lebih rendah daripada std::fstream, menawarkan kawalan yang lebih besar ke atas operasi fail dan prestasi yang berpotensi lebih tinggi.
Pengukuran yang Dikemas kini:
Untuk menentukan keberkesanan daripada setiap pendekatan dalam senario masa kini, kod dan pengukuran yang disemak telah dijalankan dalam 2017:
Kod:
Kod yang dikemas kini menggunakan teknik yang lebih maju, seperti penjanaan data, penyegerakan dengan jam resolusi tinggi dan manipulasi saiz penimbal yang fleksibel.
Keputusan:
The pengukuran mendedahkan bahawa kedua-dua Pilihan 1 (menggunakan std::fstream dengan sync_with_stdio(false)) dan Pilihan 3 (menggunakan fungsi I/O standard C) menggunakan sepenuhnya keupayaan tulis SSD, mencapai kelajuan tulis yang serupa.
Kesimpulan:
Pendekatan terbaik untuk menulis penimbal besar kepada fail binari dalam C bergantung pada konfigurasi perkakasan dan perisian tertentu. Secara umum, std::fstream dengan sync_with_stdio(false) dan fungsi I/O standard C memberikan prestasi yang cekap. Dengan menghapuskan kesesakan, teknik ini membolehkan pemindahan data yang dioptimumkan dan pantas ke SSD.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Tulisan Fail Perduaan C untuk Prestasi SSD Maksimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!