Publicado por Rafael Rosa em 19 de March de 2009

Comparativo de performance de XML em Ruby: Nokogiri vs LibXML vs Hpricot vs REXML

xmlresults.gifAviso: Toda vez que escrevemos uma matéria com números sobre benchmarking ou performance no Ruby Inside uma retratação ou correção significativa é publicada logo em seguida. Fazer benchmarks é difícil, complicado, e, na maior parte das vezes, errado ou imparcial. Não são inúteis, porém, se de alguma forma você depende desses resultados, você deveria fazer seus próprios benchmarks para confirmá-los.

Semana passada foi lançada a libxml-ruby 1.0 - um feito, uma vez que estava em desenvolvimento há sete anos. Eu suspeitei que isso poderia ameaçar o posto do Nokogiri como o "modo mais rápido de fazer parse de XML em Ruby" e pedi as pessoas para fazerem benchmarks entre eles. E, no fim das contas, o Nokogiri ainda é o mais rápido.

Aaron Patterson, o desenvolvedor responsável pelo Nokogiri, decidiu rodar alguns testes e publicou os resultados num dossier chamado "xml_truth". O ambiente do benchmark utilizou Ruby 1.8.6 no OS X 10.5 com a libxml2 2.7.3 instalada. O Hpricot 0.6.170 competiu contra o Nokogiri 1.2.2, LibXML-Ruby 1.1.2, e a biblioteca padrão REXML.

Ele montou uma série de benchmarks, mas se você quer o resumo, dê uma olhada no gráfico mostrando o resultado do parse executado em memória de um documento XML de 14 megabytes.  Observe que o tempo de parse é mostrado em segundos e o eixo Y é logarítmico. Sim, o Hpricot levou mais de um minuto, e o REXML mais de dois, enquanto o Nokogiri e a libxml-ruby acabaram em alguns segundos cada.:

xmlresults.gif

Quer ver os números? Quer ver os testes? Quer executá-los você mesmo? Veja e baixe o projeto do Aaron aqui. Divirta-se! Enquanto isso eu vou preparar meu traje protetor para o quebra-pau que irá acontecer quando começarem a reclamar que esses testes são imprecisos e tal... vai começar em: 3.. 2.. 1.. :-)

Apenas Um Comentário para “Comparativo de performance de XML em Ruby: Nokogiri vs LibXML vs Hpricot vs REXML”

  1. #1
    Bueno Disse:

    Mais uma vez o _Why (do Hpricot) contestou o benchmark, heheh. Não sou especialista na área de benchmark, nem saberia dizer os critérios necessários para avaliar bem duas ferramentas distintas.

    O importante pra nós é que esse tipo de "disputa" acelera o processo de melhoramento das ferramentas.

Deixe um Comentário