Парсинг XML в Java. DOM vs. SAX

    Наконец дошли руки написать эту заметку.
    В прошлой статье я писал о создании простейшего xml парсера на по технологии SAX.
    По просьбам трудящихся сделал следующий выпуск из этой серии. Сравнение производительности SAX и DOM.

    Итак, напомню.
    У нас был xml файл, представляющий собой структуру данных, описывающую доктора.
    Вот она:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <doc>
    <id>3</id>
    <fam>Сидоров</fam>
    <name>Семен</name>
    <otc>Семенович</otc>
    <dateb>12-05-1976</dateb>
    <datep>13-04-2005</datep>
    <datev>02-03-2004</datev>
    <datebegin>18-06-2009</datebegin>
    <dateend>22-01-2022</dateend>
    <vdolid>1</vdolid>
    <specid>1</specid>
    <klavid>1</klavid>
    <stav>1.0</stav>
    <progid>1</progid>
    </doc>


    * This source code was highlighted with Source Code Highlighter.


    Все это чудо весит 411 байт.
    Тест я решил сделать простенький. Парсил этот файл в цикле N-раз.
    Давайте посмотрим на график.
    image
    Замечание: по вертикали имеем время в миллисекундах, по горизонтали метки с объемом информации (формат N*411, где N-количество раз прогона данного xml файла).

    Получаем любопытную зависимость. Чем больше объем переработанной информации, тем дольше начинает работать DOM. На этом фоне SAX выглядит очень выйгрышно, если вам нужна скорость при больших объемах.

    В любом случае не хочу делать никаких выводов, дабы не разводить холивары. Скажу лишь только, что в выборе способа нужно пользоваться здравым смыслом и поставленными целями.

    Комментарии 9

      0
      Круто! С DOM все понятно, но почему SAX на двух мегабайтах так откланился от линейной зависимости?
        0
        тут могут быть некоторые погрешности, так что это нужно воспринимать с некоторой мерой точности.
      0
      не из памяти. каждый раз заново открывал.
        0
        из памяти было б более объективная оценка… Может в блог тематический перенесете? JAVA или XML, например?
          0
          да, пожалуй было бы лучше, но мне кажется общая динамика ясна. тут довольно большие разбросы на больших объемах.
            0
            по поводу блога — кармой не дорос :)
          +2
          если уж мерять, то имеет смысл добавить еще и jaxb-анмаршалинг

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое