我正在开发一个与使用 Java 的剽窃检测框架相关的项目。我的文档集包含大约 100 个文档,我必须对它们进行预处理并存储在合适的数据结构中。我有一个大问题,我将如何有效地处理大量文档并避免瓶颈。我的问题主要关注如何提高预处理性能。
谢谢
问候女娲
我正在开发一个与使用 Java 的剽窃检测框架相关的项目。我的文档集包含大约 100 个文档,我必须对它们进行预处理并存储在合适的数据结构中。我有一个大问题,我将如何有效地处理大量文档并避免瓶颈。我的问题主要关注如何提高预处理性能。
谢谢
问候女娲
你有点缺乏那里的细节。适当的优化将取决于文档格式、平均文档大小、处理它们的方式以及存储在数据结构中的信息类型。不知道其中任何一个,一些一般的优化是:
假设给定文档的预处理独立于任何其他文档的预处理,并且假设您正在运行多核 CPU,那么您的工作负载是多线程的良好候选者。为每个 CPU 内核分配一个线程,并将作业分配给您的线程。然后您可以并行处理多个文档。
更一般地说,尽可能多地在内存中做。尽量避免读取/写入磁盘。如果您必须写入磁盘,请尝试等到您拥有要写入的所有数据,然后在一个批次中将其全部写入。
您提供的信息很少,可以提出任何好的建议。
我的默认设置是使用带有线程池的执行程序来处理它们,线程池的线程数与机器中的核心相同,每个线程处理一个文档。