Улучшение производительности предварительной обработки большого набора документов - PullRequest
0 голосов
/ 17 апреля 2011

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

Спасибо

С уважением Nuwan

Ответы [ 2 ]

0 голосов
/ 17 апреля 2011

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

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

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

0 голосов
/ 17 апреля 2011

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

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

...