Вам немного не хватает специфики. Соответствующая оптимизация будет зависеть от таких вещей, как формат документа, средний размер документа, то, как вы их обрабатываете, и какую информацию вы храните в своей структуре данных. Не зная ни одного из них, некоторые общие оптимизации:
Если предположить, что предварительная обработка данного документа не зависит от предварительной обработки любого другого документа, и если вы работаете с многоядерным ЦП, то ваша рабочая нагрузка является хорошим кандидатом для многопоточности , Выделите один поток на ядро процессора и перенесите задания в свои потоки. Затем вы можете параллельно обрабатывать несколько документов.
В общем, делайте как можно больше памяти. Старайтесь избегать чтения с / записи на диск в максимально возможной степени. Если вам необходимо выполнить запись на диск, попробуйте подождать, пока у вас будут все данные, которые вы хотите записать, а затем запишите все это в одном пакете.