在C 語言中有效地將大型緩衝區寫入二進位檔案
將大量資料寫入二進位檔案可能具有挑戰性,特別是在尋求高速時表現。本文研究了在 C 中加速此過程的技術。
效能瓶頸
最初的方法使用 std::fstream,僅達到 20MB/s。這種與同一 SSD 上更快的檔案複製速度的差異表明了潛在的最佳化。
解決方案A:切換到C 風格的文件處理
使用C-樣式文件處理(FILE*) 顯著提高了性能,速度達到約220MB/ s。該方法繞過了中間層,直接與作業系統的檔案系統交互,減少了開銷。
解決方案B:禁用流同步
禁用與std::ios_base 的流同步::sync_with_stdio(false) 顯著增強了std::fstream 方法的性能。此修改消除了阻礙資料寫入的不必要操作。
比較選項
最近的基準測試顯示 std::fstream(停用串流同步)和 C 風格檔案處理可以有效最大化SSD的寫入速度。然而,std::fstream 提供了更簡單、更現代的 API,而 C 風格的檔案處理在某些情況下提供了稍微的效能。
結論
對於編寫大型文件緩衝區到二進位文件,建議使用以下策略:
以上是如何在 C 語言中有效地將大緩衝區寫入二進位檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!