2011-04-17 67 views
-1

我正在使用Java處理與剽竊檢測框架相關的項目。我的文檔集包含大約100個文檔,我必須對它們進行預處理並存儲在合適的數據結構中。我有一個很大的問題,我將如何高效地處理大量文檔並避免瓶頸。主要關注我的問題是如何提高預處理性能。提高預處理大量文檔集的性能

感謝

問候 Nuwan

+1

提高什麼性能?你還沒有寫任何東西,所以你不知道什麼是或什麼可能是一個瓶頸。我們沒有足夠的信息來猜測你正在做什麼類型的預處理。對我來說,100個文檔看起來不是很大。 – camickr 2011-04-17 04:26:26

+1

您應該通過提供有關文檔的起始格式和目標數據結構外觀的信息來使問題更具體化。另外,您應該提供一些信息,說明目前需要多長時間需要花費的時間。 – ChrisH 2011-04-17 04:27:16

+1

100個文件並不大。 100,000文件很大... – 2011-04-17 05:06:46

回答

-1

你給上作出任何好的建議很少的信息。

我的默認設置是使用一個執行程序來處理它們,該執行程序的線程池的線程數與每臺線程處理文檔的核心數相同。

+0

好的。我明白了你的觀點。感謝名單。我想知道的另一件事是什麼是最有效的數據結構來存儲預處理爲文檔的標記。這是至關重要的,因爲我必須在文檔比較階段經常處理這些經過預處理的文檔標記(單詞)。 Thnx – Nuwan 2011-04-22 03:39:47

0

你在這方面有點缺乏細節。適當的優化將取決於文檔格式,平均文檔大小,您如何處理它們以及您在數據結構中存儲什麼類型的信息等內容。不知道其中任何一個,一些通用的優化是:

  1. 假設給定文件的前處理是獨立於任何其他文件的預處理,並假設你正在運行一個多核心CPU ,那麼你的工作量是多線程的一個很好的候選者。爲每個CPU核心分配一個線程,並將作業排除在線程之外。然後您可以並行處理多個文檔。

  2. 更一般地說,儘可能在內存中儘可能多地做。儘量避免讀取/寫入磁盤。如果您必須寫入磁盤,請嘗試等待,直到獲得所有要寫入的數據,然後將其全部寫入單個批處理中。

+0

Thanx的答覆。我的問題是我想讀取100個文件。如果我以順序的方式來做,它會花費很多時間。所以我想要一個高效的parellel算法(使用線程等)來快速讀取文檔。從文檔讀取的令牌應該存儲在合適的數據結構中,以便進行文檔比較。 – Nuwan 2011-04-22 03:35:27