在C 中將大型緩衝區寫入二進製文件:優化性能
原始問題:
當嘗試將大量資料(80GB) 寫入SSD 時,提供的 C程式碼使用std::fstream 的速度約為 20MB/s,明顯低於 SSD 的預期傳輸速率。此問題尋求優化寫入過程的方法。
解決方案:
選項1:使用std::fstream 和sync_with_stdio(false)
此方法利用std ::fstream 和sync_with_stdio(false) 標誌,該標誌停用C 和 C I/O 流之間的同步。透過解耦流,它可以減少格式化和刷新資料的開銷,從而提高某些系統的效能。
選項2:利用C 標準I/O 函數
這option 使用低階C 標準I/O 函數(fopen、fwrite 和fclose)將資料寫入二進位文件。 C I/O 的運作等級低於 std::fstream,可以更好地控製檔案操作並可能實現更高的效能。
更新的測量:
確定有效性對於當今場景中的每種方法,修訂後的代碼和測量是在2017:
代碼:
更新後的程式碼採用了更先進的技術,例如資料產生、與高解析度時脈同步以及靈活的緩衝區大小操作。
結果:
測量結果顯示,兩個選項選項1(使用std::fstream和sync_with_stdio(false))和選項3(使用C標準I/ O函數)充分利用了SSD的寫入能力,達到了相似的寫入速度。
結論:
用 C 語言將大緩衝區寫入二進位檔案的最佳方法取決於特定的硬體和軟體配置。一般來說,具有sync_with_stdio(false)的std::fstream和C標準I/O函數提供高效率的效能。透過消除瓶頸,這些技術可以優化且快速地將資料傳輸到 SSD。
以上是如何優化 C 二進位檔案寫入以獲得最大 SSD 效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!