Мне нужно знать, как на производительность различных инструментов XML (анализаторы, валидаторы, оценщики выражений XPath и т.д.) Влияют размер и сложность входного документа. Существуют ли ресурсы, в которых описывается, как время процессора и использование памяти зависят от... ну, что? Размер документа в байтах? Количество узлов? И являются ли отношения линейными, полиномиальными или хуже?
Обновить
В статье в журнале IEEE Computer Magazine, том 41, номер 9, сентябрь 2008 г. авторы рассматривают четыре популярные модели синтаксического анализа XML (DOM, SAX, StAX и VTD). Они запускают несколько базовых тестов производительности, которые показывают, что пропускная способность DOM-парсера уменьшается вдвое при увеличении размера входного файла с 1-15 КБ до 1-15 МБ или примерно в 1000 раз больше. Пропускная способность других моделей существенно не пострадала.
К сожалению, они не провели более детальных исследований, таких как пропускная способность/использование памяти как функция количества узлов/размера.
Статья здесь.
Обновить
Я не смог найти формального решения этой проблемы. Что бы это ни стоило, я провел несколько экспериментов по измерению количества узлов в документе XML как функции размера документа в байтах. Я работаю над системой управления складом, и XML-документы являются типичными складскими документами, например, уведомление о доставке и т.д.
На приведенном ниже графике показана взаимосвязь между размером в байтах и количеством узлов (которая должна быть пропорциональна размеру памяти документа в модели DOM). Разные цвета соответствуют разным видам документов. Шкала лог/лог. Черная линия лучше всего подходит для синих точек. Интересно отметить, что для всех видов документов соотношение между размером байта и размером узла является линейным, но коэффициент пропорциональности может быть очень разным.
(источник: flickr.com)