Ускорение парсинга большого файла

Есть файл состоящий из 4 миллионов строк, где каждая строка это json объект. Сейчас процесс выглядит так: я получаю строку из файла, далее идет парсинг этой строки и вставка в бд. Как добиться максимальной скорости этого процесса ?


Ответы (1 шт):

Автор решения: ЮрийСПб

Вот тут есть пример как можно распараллелить парсинг: https://stackoverflow.com/a/10625178/3212712. Там же (и в других местах) утверждается, что само чтение в разных потоках прироста скорости не даст.

Т.е., получается, надо примерно так:

  1. В одном потоке читаем файл, составляем из него список строк.
  2. Делим список строк на части (тут, наверное, методом проб можно определить на какое кол-во частей можно/оптимальнее поделить)
  3. Каждую часть строк отправляем в отдельный поток, который распарсит каждую строку и
  4. сформирует SQL запрос по массовой вставке данных в БД, что да, как говорят в комментах должно быть самой медленной частью процесса.
→ Ссылка