В этом конкретном контексте работа в многопоточной среде не увеличивает производительность.
Вы выполняете тяжелые операции ввода-вывода (чтение и запись на диск), которые не могут быть выполнены разными потоками.
Вы можете точно распараллелить поиск после того, как загрузили свой контент и перед записью его на диск, но для обычного текстового поиска скорость не может быть действительно увеличена.
Учтите, что перед попыткой применитьсложный алгоритм многопоточности:
- Время кодирования зависит от операций ввода-вывода?(сеть, диск, база данных ...)
Если да и исчисление не тяжелое, не стоит тратить много времени на попытки ускорить фазу исчисления, потому что операции ввода-вывода происходят вна сто или тысячи раз медленнее, чем в операциях с памятью.
Кстати попробуйте разделить время выполнения на следующие части:
- загрузить файл в память
- поиск по фразам
- запись результата на диск
Если второй этап действительно быстрее по сравнению с другими, распараллеливание не является хорошим решением, но вы должны попробоватьдругие решения.