DOM XML
От: 17dufa  
Дата: 17.01.08 07:41
Оценка:
Здраствуйте,
имеется странная штука: парсинг 9 Мб XML файла DOM парсерами Qt и xerces-c приводит к отжиранию примерно 80 Мб памяти, можете ли Вы подсказать другие DOM парсеры с предположительно меньшими затратами памяти (желательно раз в 5-10) или единственный выход — переход на SAX?
Re: DOM XML
От: rus blood Россия  
Дата: 17.01.08 08:02
Оценка:
Здравствуйте, 17dufa, Вы писали:

1>Здраствуйте,

1>имеется странная штука: парсинг 9 Мб XML файла DOM парсерами Qt и xerces-c приводит к отжиранию примерно 80 Мб памяти, можете ли Вы подсказать другие DOM парсеры с предположительно меньшими затратами памяти (желательно раз в 5-10) или единственный выход — переход на SAX?

В смысле, "в 10 раз" ? Вы хотите загрузить 9МБ текста в DOM и потратить на это 8МБ ???

Если нужно только что-то поискать в xml-нике, то нужен парсер, который строит DOM только по факту обращения к элементам.
Если нужно прошерстить весь xml, то SAX.
Имею скафандр — готов путешествовать!
Re[2]: DOM XML
От: Аноним  
Дата: 17.01.08 08:28
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>В смысле, "в 10 раз" ? Вы хотите загрузить 9МБ текста в DOM и потратить на это 8МБ ???


RB>Если нужно только что-то поискать в xml-нике, то нужен парсер, который строит DOM только по факту обращения к элементам.

RB>Если нужно прошерстить весь xml, то SAX.

Ну если в 10 раз нельзя, то хотя б в 5 Какой DOM парсер можете посоветовать с реализацией описанной функциональности?

Прошерстить весь — не надо. Грубо говоря на этом этапе обработке нужен доступ к одному полю, но к сожалению договорится о кодировке не удалось, так что придется смотреть заголовок и тп, что делать ручками совершенно не хотца. Вообще — необходимое поле лежит почти в самом начале, так что если есть возможность прервать анализ, то запуск SAX кажется наилучшим решением.
Re[3]: DOM XML
От: 17dufa  
Дата: 17.01.08 08:31
Оценка:
Прошу прощения, предыдущее сообщение — мое.
Re: DOM XML
От: Glоbus Украина  
Дата: 17.01.08 08:51
Оценка:
Здравствуйте, 17dufa, Вы писали:

1>Здраствуйте,

1>имеется странная штука: парсинг 9 Мб XML файла DOM парсерами Qt и xerces-c приводит к отжиранию примерно 80 Мб памяти, можете ли Вы подсказать другие DOM парсеры с предположительно меньшими затратами памяти (желательно раз в 5-10) или единственный выход — переход на SAX?

Если все так критично, то я бы воспользовался SAX-ом. DOM, на мой взгляд, нужен в том случае, если тебе прямо всю его структуру нужно хранить. А если просто вычитать какую-то инфу (например инициализацию) — то лучше SAX.
Удачи тебе, браток!
Re: DOM XML
От: . Великобритания  
Дата: 17.01.08 12:49
Оценка: 2 (1)
17dufa wrote:

> Здраствуйте,

> имеется странная штука: парсинг 9 Мб XML файла DOM парсерами Qt и
> xerces-c приводит к отжиранию примерно 80 Мб памяти, можете ли Вы
> подсказать другие DOM парсеры с предположительно меньшими затратами
> памяти (желательно раз в 5-10) или единственный выход — переход на SAX?
Поэкспериментируй с libxml2. Он, например, умеет словарь имён тегов использовать. Т.е. если у тебя 10000 тегов с именем "veryLongTagName" то вместо 16 байт на каждое имя будет 4 байта на указатель в словаре.
Но лучше, конечно, SAX.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: DOM XML
От: Аноним  
Дата: 18.01.08 08:53
Оценка:
Здравствуйте, Аноним, Вы писали:

видимо отжирание памяти в 10кратном размере исходника это стандартная болезнь. Тот же перловый XML::Simple ест примерно столько же, на наших 30Мб xml-ках по 400Мб памяти
Re[2]: DOM XML
От: Кодёнок  
Дата: 18.01.08 11:37
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>В смысле, "в 10 раз" ? Вы хотите загрузить 9МБ текста в DOM и потратить на это 8МБ ???


Лично я — хочу. Чтобы 5000 раз повторяющиеся имена тэгов и атрибутов типа <DataTableEntry> были записаны в словарь, и DOM ссылался на них по числовым индексам.
Re: DOM XML
От: игппук Беларусь  
Дата: 19.01.08 16:33
Оценка:
Здравствуйте, 17dufa, Вы писали:

1>Здраствуйте,

1>имеется странная штука: парсинг 9 Мб XML файла DOM парсерами Qt и xerces-c приводит к отжиранию примерно 80 Мб памяти, можете ли Вы подсказать другие DOM парсеры с предположительно меньшими затратами памяти (желательно раз в 5-10) или единственный выход — переход на SAX?

посмотрите на мой парсер правда он не чистый дом и не чистый сакс. но память не жрет.
проклятый антисутенерский закон
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.