Por que a procura de edição XML / XPath usa quantidades tão ridículas de memória?

0

Eu tenho um arquivo XML grande (cerca de 37 MB - é o arquivo XML subjacente em um documento do Word com cerca de 350 páginas) que estou tentando pesquisar com XPath. Estou fazendo isso "manualmente" em vez de programaticamente, abrindo o arquivo em um editor de XML e pesquisando lá.

Eu tentei com o Xmplify, o QXmlEdit, o SublimeText com a extensão XPath, etc., e todos eles sofrem do mesmo problema: abrir o arquivo é ridiculamente lento e ocupa muito a memória, e fazer uma pesquisa XPath é quase impossível.

Como exemplo, tentei abrir o arquivo no Xmplify. Isso levou cerca de três minutos e, sem outros documentos, o uso de memória do Xmplify aumentou para cerca de 1 GB.

Então, tentei executar essa consulta XPath (estou procurando todas as inserções rastreadas que consistem na string en ):

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

Isso me deu um SPOD por um bom tempo. Após cerca de 15 minutos em torno de 100% da CPU, o Xmplify estava agora usando 60 GB de memória , e meu sistema operacional estava me dizendo que eu tinha ficado sem memória de aplicativo e necessário para começar a forçar a sair coisas.

Isso parece um pouco excessivo para mim em uma única consulta XPath em um único arquivo, mesmo que seja um arquivo razoavelmente grande. Os outros aplicativos que eu tentei usar não eram tão graves, mas abrir o documento e executar qualquer tipo de consulta XPath ainda levava alguns minutos, e seus usos de memória também eram contáveis em GB, então não é apenas Xmplify sendo ineficiente.

Qual é o motivo disso? Por que o XPath (aparentemente) é tão intensivo em recursos? Diferencia-se entre sistemas operacionais (o meu é macOS Sierra)?

Eu estava debatendo se postaria isso aqui ou no StackOverflow, mas como não estou fazendo isso de forma programática, decidi que este era provavelmente o melhor lugar. Sinta-se à vontade para migrar se houver um Stack melhor para ele.

    
por Janus Bahs Jacquet 14.08.2017 / 19:04

0 respostas