2012-11-07 99 views
0

假設我在Linux上有一個非常快速且無限的數據源(例如套接字,/ dev/null或/ dev/random),我需要將這些數據寫入磁盤C/C++。什麼是在給定的硬件上完成的最快的代碼? fwrite(),unbuffered write(),一些boost ASIO函數?在Linux上將文件寫入磁盤的最快方法

+0

給定的操作系統呢? –

+0

好吧,讓我們來看看Linux –

+0

一條到'gzip -c'的管道可以非常快。 –

回答

1

就原始輸出速度而言,那麼您將不得不基於測試,QoI,平臺,您正在編寫的內容以及FILE,fstream或POSIX中的其他任何東西基元可以是最快的。但是,如果你可以使用類似Boost asio的東西,那麼由於它是異步的本質,你可能會得到一個percieved的加速,它可以繼續讀下一個工作,但它仍然寫入磁盤。

編輯:我會去提升asio,它會讓你最好地利用你的資源,同時等待本質上慢的操作(文件和網絡IO)。