Улучшение производительности предварительной обработки большого набора документов

Я работаю над проектом, связанным с платформой обнаружения плагиата с использованием Java. Мой набор документов содержит около 100 документов, и я должен предварительно обработать их и сохранить в подходящей структуре данных. У меня большой вопрос, как мне эффективно обработать большой набор документов и избежать узких мест. Основное внимание на мой вопрос заключается в том, как улучшить производительность предварительной обработки.

Спасибо

С уважением, Нуван

2 ответа

Вам немного не хватает специфики там. Соответствующая оптимизация будет зависеть от таких вещей, как формат документа, средний размер документа, то, как вы их обрабатываете, и какую информацию вы храните в своей структуре данных. Не зная ни одного из них, некоторые общие оптимизации:

  1. Если предположить, что предварительная обработка данного документа не зависит от предварительной обработки любого другого документа, и если вы работаете с многоядерным ЦП, то ваша рабочая нагрузка является хорошим кандидатом для многопоточности. Выделите один поток на ядро ​​процессора и перенесите задания в свои потоки. Затем вы можете обрабатывать несколько документов параллельно.

  2. В общем, делайте как можно больше в памяти. Старайтесь избегать чтения с / записи на диск в максимально возможной степени. Если вам необходимо выполнить запись на диск, попробуйте подождать, пока у вас есть все данные, которые вы хотите записать, а затем запишите все это в одном пакете.

Вы даете очень мало информации, чтобы сделать какие-либо хорошие предложения.

По умолчанию я обрабатываю их с помощью исполнителя с пулом потоков с тем же числом потоков, что и у ядер на вашем компьютере, каждый поток обрабатывает документ.

Другие вопросы по тегам