Анализатор C XML (скорость, доступ к дереву DOM)

#c #dom #c 11 #xml-parsing

#c #dom #c 11 #xml-синтаксический анализ

Вопрос:

Кто-нибудь сталкивался с анализаторами c XML (TinyXML, RapidXML, PugiXML и т.д.) и знает, какие из них имеют быстрый доступ к дереву DOM? Я знаю тест производительности из теста RapidXML. Но меня интересует скорость доступа к дереву DOM (например, циклическое перемещение по узлам, поиск узлов и т. Д.) Этого анализатора. Кто-нибудь знает, какой из них самый быстрый для c ? Это все еще RapidXML?

Ответ №1:

Только что сделал 2 небольших модульных теста «RapidXML vs TinyXML» для «простых XML-файлов» размером от 10-100 КБ. Моя тестовая консоль полностью оптимизирована по производительности.

  1. Модульный тест # 1, повторяющий цикл 100000 раз, открывает один и тот же XML-файл и анализирует его Результат: RapidXML / TinyXML = 1.19 — на 19% быстрее.

  2. Модульный тест # 2 снова проанализировал каталог, содержащий 247 разных XML-файлов в том же диапазоне размеров: Результат: Здесь разница была незначительной, т. Е. RapidXML / TinyXML = 1.03.

ПК: Windows 7 Pro, Precision Tower 3620

Ответ №2:

PugiXML обычно немного быстрее, чем RapidXML. Пожалуйста, посмотрите на результаты тестирования:http://pugixml.org/benchmark

Как вы можете видеть, TinyXML работает очень медленно на этом компьютере. Лично я использую PugiXML, и я работаю с файлами XML размером 100-400 КБ, и это работает нормально.

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

1. Но этот тест учитывает только скорость синтаксического анализа, а не доступ к дереву DOM, который меня интересует: (поиск узлов, итеративный цикл по узлам)…

Ответ №3:

В настоящее время я использую RapidXML для проекта, и это невероятно быстро. Скорость синтаксического анализа действительно хорошая, и перебор по дереву очень прост и быстр. Его интерфейс действительно прост в использовании. Поскольку итерация по дереву — это действительно все, что я делаю (извлечение древовидной структуры и меток для дальнейшей обработки), возможно, мой опыт работы с этим не так уж и полезен для вас. Но если не учитывать каждый цикл процессора, вам, вероятно, следует решить, какой интерфейс вам больше нравится (или провести свои собственные эксперименты и поделиться своими результатами).