Да уж...
MoKo 10.05.2012 13:36
В целом для обработки таких объемов данных правильнее использовать потоковые утилиты Unix (sed/awk), которые не грузят файлы целиком, а обрабатывают их построчно.
Парсер же грузит файл при чтении целиком, то есть это уже 200Мб. Если же в процессе работает какой-то код, то две рекомендации: 1. да, использовать memory:compact. Но понятно не каждую итерацию, а скажем каждую 1000 - 10,000 (смотреть как быстрее, поскольку каждый вызов потребляет время). 2. Если на выходе у вас планируется один результат (выходной файл), то раз в те же 1000 итераций дописывать сбрасывать результат в выходной файл. Примерно так:
^if($i%1000=0){
^result.save[append;result.txt]
$result[]
}
+ за циклом сохранить остаток
^result.save[append;result.txt]
Заодно и процесс работы будет нагляднее (можно смотреть на result.txt). Хранить результат целиком в памяти не стоит, поскольку он составляется из мелких кусочков строк и будет очень сильно фрагментирован (а значит работа с ним будет медленной).
- Обработка большого объема данных, virusav 10.05.2012 13:10
- Ответ, virusav 16.05.2012 11:28
- Ответ, virusav 14.05.2012 18:07
- а пример данных можно глянуть, вместе с регуляркой? (-), 10.05.2012 16:17
- Ответ, virusav 10.05.2012 16:49
- Ответ, Maxx [M] 11.05.2012 11:32
- Ответ, virusav 11.05.2012 11:52
- Да уж..., MoKo 10.05.2012 13:36
- Ответ, virusav 10.05.2012 13:48 / 10.05.2012 14:05
- Ответ, MoKo 10.05.2012 14:56
- Ответ, virusav 10.05.2012 14:58