2010-06-06 45 views
0

我在磁盤中有一個壓縮文件,即一個分區塊。我從磁盤讀取一個塊,將其解壓縮到內存並讀取數據。生產者/消費者 - I/O磁盤

可以創建一個生產者/消費者,一個線程從磁盤恢復壓縮塊並放入隊列,另一個線程解壓縮並讀取數據?

性能會更好嗎?

謝謝!

回答

0

是的,可以這樣設置它。無論你是否會看到性能改進都完全依賴於機器,解壓縮數據的確切性質等等。如果它不是太麻煩,而且你的數據集很豐富,我會建議你這樣做,測量看看它是否更快。如果沒有其他的東西,它就像你需要做的工作來利用某種map-reduce框架。

+0

地圖縮小是針對計算機集羣的。就我而言,我只有一臺機器。我如何使用它? 謝謝 – 2010-06-08 13:10:58

+0

雖然Map/Reduce很受歡迎,因爲它允許使用羣集輕鬆進行水平伸縮,所以完全可以在單節點配置中使用它。看看這篇[關於單節點Hadoop的文章](http://hadoop.apache.org/common/docs/current/quickstart.html)。 – 2010-06-08 14:34:24

1

我懷疑解壓縮數據的線程將花費大部分時間等待從磁盤讀取壓縮塊的線程。

如果受CPU限制的解壓縮花費的時間超過從磁盤讀取塊的IO限制,我會感到驚訝。

+0

這一切都取決於您使用的磁盤和壓縮,例如解壓gzip文件到目前爲止我們的服務器上綁定了cpu。 – nos 2010-06-06 23:53:41

+0

這就是要點。如果我使用大量壓縮,解壓縮線程可能不會等待I/O線程,然後我將獲得性能提升。 – 2010-06-07 09:47:18