Почему редактирование XML / поиск XPath используют такие нелепые объемы памяти?

305
Janus Bahs Jacquet

У меня есть большой XML-файл (около 37 МБ - это основной XML-файл в документе Word объемом около 350 страниц), который я пытаюсь найти в XPath. Я делаю это «вручную», а не программно, открывая файл в редакторе XML и ища там.

Я пробовал с Xmplify, QXmlEdit, SublimeText с расширением XPath и т. Д., И все они страдают от одной и той же проблемы: просто открытие файла смехотворно медленно и требует огромного количества памяти, а поиск XPath почти невозможен ,

В качестве примера я просто попытался открыть файл в Xmplify. Это заняло около трех минут, и при отсутствии других открытых документов использование памяти Xmplify возросло до 1 ГБ.

Затем я попытался выполнить этот запрос XPath (я ищу все отслеживаемые вставки, состоящие из строки en ):

//w:ins[w:r/w:t = 'en'] 

Это дало мне SPOD на некоторое время. После 15 минут работы на 100% CPU, Xmplify теперь использовал 60 ГБ памяти, и моя ОС сообщала мне, что у меня закончилась память приложения и что мне нужно начинать принудительное завершение работы.

Это кажется мне чрезмерным для одного запроса XPath в одном файле, даже если это довольно большой файл. Другие приложения, которые я пытался использовать, были не столь ужасно плохими, но открытие документа и выполнение любого вида запроса XPath по-прежнему занимали минуты, и их использование памяти исчислялось также и в ГБ, так что Xmplify не только неэффективен.

Что является причиной этого? Почему XPath (очевидно) так ресурсоемок? Различается ли она между операционными системами (моя - macOS Sierra)?

 

Я спорил, стоит ли публиковать это здесь или в StackOverflow, но так как я специально не делаю это программно, я решил, что это, вероятно, лучшее место. Не стесняйтесь мигрировать, если для этого есть лучший стек.

0
Кстати, Saxon запустит это выражение для файла размером 100 МБ из командной строки, используя 435 МБ памяти: 266 мс для анализа запросов, 1,97 с для синтаксического анализа XML и построения дерева, 55 мс для оценки запросов. Но XML-редакторы, скорее всего, создадут структуру в памяти, предназначенную главным образом для редактирования, а не для запросов. Michael Kay 7 лет назад 1
@MichaelKay Эти цифры кажутся мне вполне разумными - даже быстрее, чем ожидалось. Но, безусловно, такое огромное расхождение является показателем не только выбора дизайна? Я не слышал о саксонском раньше; Я изучу это, чтобы узнать, смогу ли я заставить его работать для моих целей. Janus Bahs Jacquet 7 лет назад 0

0 ответов на вопрос

Похожие вопросы