ViktorSPB
Если проблема памяти то решать надо уже её. Можно читать файл частями по 50 Мб., после обработки сохранить первую партию в файл. Будет проблема обрезки, последняя строка каждого куска испортится. Ищем с конца первый перенос строки, отрезаем справа эту часть текста и прилепляем в начало следующего куска.
Думаю тут проблема будет уже в скорости, при выборе вариантов. Каждый вариант протестировать на скорость. Функция _StringRegExp от CreatoR у меня долго работала при запуске в цикле
И это всего 12 000 элементов, не 15 млн.
Построчный вариант тоже дольше чем одно регулярное выражение обрабатывающее 1 млн строк.
Если проблема памяти то решать надо уже её. Можно читать файл частями по 50 Мб., после обработки сохранить первую партию в файл. Будет проблема обрезки, последняя строка каждого куска испортится. Ищем с конца первый перенос строки, отрезаем справа эту часть текста и прилепляем в начало следующего куска.
Думаю тут проблема будет уже в скорости, при выборе вариантов. Каждый вариант протестировать на скорость. Функция _StringRegExp от CreatoR у меня долго работала при запуске в цикле
Код:
$sPattern = "^[90-12147]$"
For $i = 90 To 12147
$aRet = _StringRegExp($i, $sPattern, 3)
If Not IsArray($aRet) Or Not ($aRet[0]==$i) Then MsgBox(0, 'Сообщение' & $i, $aRet[0]&' ???')
Next
И это всего 12 000 элементов, не 15 млн.
Построчный вариант тоже дольше чем одно регулярное выражение обрабатывающее 1 млн строк.