Velocidade e análise de XML em .NET - serialização vs XML DOM vs?
-
06-09-2019 - |
Pergunta
Eu fiz análise XML antes, mas nunca em uma escala maciça. Se eu estou trabalhando com muitos documentos semelhantes a este formato:
<?xml version="1.0" ?>
<items comment="something...">
<uid>6523453</uid>
<uid>94593453</uid>
</items>
O que é a maneira mais rápida para analisar estes documentos?
1) XML DOM
2) Serialize XML - Rehydrate a um objeto .NET
3) Alguns outro método
Atualizar
Eu esqueci de mencionar que haveria cerca de 8000 elementos uid, em média.
Solução
Usando XmlReader
é definitivamente vai ser o método mais rápido, que você vai ter que fazer toda a análise manualmente, é claro. Lê-se directamente a partir do fluxo sem cache qualquer coisa, porém não é muito conveniente de usar em comparação com o DOM.
Comparando os dois você sugeriu: serialização deve ser mais rápido do que usando o DOM uma vez que (eu acredito) que não armazena em cache a árvore inteira dentro da memória - ele também certamente tem um fácil de usar interface, se você está apontando especificamente para executar a serialização.
Outras dicas
Eu diria que o XML serialização seria o melhor dos dois mundos. Você começa a facilidade de utilização, bem como uma boa velocidade. Há alguma sobrecarga adicional com a serialização XML ... no entanto se você usou XmlReader manualmente, pelo menos você vai replicar, se não exceder, o sobrecarga no seu próprio como você usa esse leitor de recriar o seu gráfico de objeto.
Dependendo do que você precisa fazer com os dados que o XmlReader mencionado por @Noldorin é sua melhor aposta para streaming de processamento de estilo. Se precisar de mais acesso estilo ad-hoc para os dados utilizando XPath eo XPathDocument será muito mais rápido do que o documento XML bruto.