parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Да уж...

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). Хранить результат целиком в памяти не стоит, поскольку он составляется из мелких кусочков строк и будет очень сильно фрагментирован (а значит работа с ним будет медленной).