středa 14. července 2004

Java:Zpracování XML souborů - rychlost čtení SAX versus DOM

Tomáš Kouba porovnal rychlost čtení XML dokumentu SAX vs. DOM v prostředí platformy DOT.NET. Protože mě to zajímalo požádal jsem Tomáše Koubu o zdrojáky a testovací XML soubory a přepsal jsem jeho test do Javy.

Výsledky nebyly nijak překvapivé, s rostoucí velikostí XML souboru narůstala rychlost zpracování ve prospěch SAX zpracování. S lokálním souborem byl rozdíl při 10000 uzlech přibližně trojnásobný.

Počet uzlůDOM local(ms)DOM remote(ms)SAX local(ms)SAX remote(ms)
100233273153203
1000517828270571
10000222352177373688

Výše uvedené hodnoty jsem naměřil pod OS Windows 2000 na JRE 1.4.2-b28 (standardní JAXP).

Z praktického hlediska je práce s objektovou strukturou, kterou poskytuje rozhraní DOM mnohem snazší. Pokud není rychlost zpracování XML stěžejní, pak doporučuji použít DOM. Cílem tohoto měření nebylo porovnat SAX DOM .NET vs. SAX DOM Javy. Zmínil bych dva rozdíly, zatímco .NET XML parser ignoruje whitespaces, javovský XML parser to standardně neděla.

Náměty pro další zkoumání bych hledal ve složitější struktuře zpracovávaného XML dokumentu a z hlediska Javy v použití novějších verzi Xalanu (Xercesu) případně jiných XML parseru.