2011-04-17 42 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