最近碰到一個問題:
windows下 在一個專案中,采用了UDT協議傳輸大量的大型的檔案,發送端和接收端在不同的機器上,接收端怎能接收資料,但不可以反饋資訊給發送端,接收端收到檔案后,呼叫標準I/O庫函式fwrite()進行寫檔案,知道整個檔案下完,才回傳,如果接收端運行在一臺性能比較差的機器上,接收一段時間后記憶體會急劇上升,從而導致接收錯誤。初步斷定是磁盤I/O太慢造成的,請問windows有沒有什么技術,可以挺高磁盤I/O操作的效率,或者說避免這種磁盤I/O性能不足的問題
uj5u.com熱心網友回復:
磁盤I/O太慢 有多慢?
uj5u.com熱心網友回復:
跟不上我程式接收資料的速度uj5u.com熱心網友回復:
如果把接收端運行在一個比較好的機器上,此類現象大為改觀。uj5u.com熱心網友回復:
換固態硬碟。uj5u.com熱心網友回復:
1.優化檔案讀寫可以增加資料Cache,使用異步方式來寫檔案;
也可以考慮使用記憶體映射檔案來操作檔案,效率比fwrite肯定要高;
2.如果優化檔案寫入后性能仍然不達標
那除了換硬體
還真的沒有什么可以優化的
uj5u.com熱心網友回復:
減少機器機器指令,特別是IO指令。uj5u.com熱心網友回復:
如果是突發模式的可以靠大記憶體了緩沖, 要不然還是升級硬體吧轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/61030.html
標籤:網絡編程
