Linux, Open-source, Programação e Produtividade

Deixe seus XPaths mais rápidos

Jonas Abreu em 29/07/2012

Recentemente tive novamente problemas com performance de XPaths. Basicamente, processamento de XPaths era responsável por 25% do tempo da requisição.

Procurando sobre como melhorar a performance de XPaths, encontrei uma pergunta muito interessante no StackOverflow.

Basicamente existe um bug na implementação da JAXP da Apache, que é a que usamos nessa aplicação (e que parece ser a implementação distribuída com a JDK)

Para contornar esse bug, basta adicionar uma das seguintes flags (dependendo se você usa a implementação padrão ou um jar do Xalan):

-Dorg.apache.xml.dtm.DTMManager=org.apache.xml.dtm.ref.DTMManagerDefault

ou

-Dcom.sun.org.apache.xml.internal.dtm.DTMManager=com.sun.org.apache.xml.internal.dtm.ref.DTMManagerDefault

Em um benchmark muito ruim, apenas para verificar rapidamente se existia alguma diferença, obtive um tempo de processamento 50% menor que sem a flag.

Em produção, depois de colocarmos a flag, notamos uma redução de 40% do tempo de processamento de XPath, o que resultou em uma melhoria perto de 10%. Nada mal para quase nenhum trabalho.

Creative Commons License
Deixe seus XPaths mais rápidos de Jonas Abreu está licenciado sob Creative Commons License.