parser

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

 

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

Задача такая

Maxx 17.06.2010 20:17 / 17.06.2010 20:19

Нужно обработать много XML-файлов (порядка 2000) и положить из них инфу в БД. Файлы большие, в среднем 15Mb.

Вот такой простой код (да, просто load, без обработки) достаточно быстро приводит к повешенью парсера
^tFileList.menu{
	$xDoc[^xdoc::load[$tFileList.name]
	^Erusage:compact[]
	^Erusage:print[]
}
Без compact это происходит гораздо быстрее. Вот кстати выдержка результата Erusage:print
2010-06-17 20:10:52	memory begin/end/collected: 448/111588/56 KB	calls/compacts: 1/1
2010-06-17 20:10:54	memory begin/end/collected: 448/210316/76 KB	calls/compacts: 2/2
2010-06-17 20:10:55	memory begin/end/collected: 448/308152/96 KB	calls/compacts: 3/3
2010-06-17 20:10:57	memory begin/end/collected: 448/405576/108 KB	calls/compacts: 4/4
2010-06-17 20:10:59	memory begin/end/collected: 448/503568/116 KB	calls/compacts: 5/5
2010-06-17 20:11:00	memory begin/end/collected: 448/517848/83484 KB	calls/compacts: 6/6
...
2010-06-17 20:11:33	memory begin/end/collected: 448/822576/1625420 KB	calls/compacts: 25/25
2010-06-17 20:11:35	memory begin/end/collected: 448/834724/1752948 KB	calls/compacts: 26/26
2010-06-17 20:11:37	memory begin/end/collected: 448/971844/1752956 KB	calls/compacts: 27/27
Решил вызывать парсера передавая ему по одному файлу.