Russian Qt Forum
Ноябрь 22, 2024, 16:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks  (Прочитано 3908 раз)
neosapient
Гость
« : Январь 22, 2009, 00:25 »

Добрый день.
Вопрос ламера.
В стандартных примерах QT4 есть три схожие программы dombookmarks, saxbookmarks, streambookmarks.
Хочется понять, зачем писали именно три схожих примера? Чем по функциональности отличаются базовые классы, на которых основаны данные примеры (dom, sax, stream)?

Есть тезис, о том, что приходиться выбирать между быстротой(скорость исполнения), ценой(размер программы) и качеством(наверно, удобство в использовании). Какая из представленных программ демонстрирует самую высокую скорость разбиения xml-текста на базовые элементы (имеется в виду очень большой документ с глубиной вложености в 2-3 тега)?
« Последнее редактирование: Январь 22, 2009, 00:38 от neosapient » Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #1 : Январь 22, 2009, 01:20 »

По поводу DOM и SAX скажу кратко.

DOM распарсивает весь XML-документ и хранит копию всех данных в своем внутреннем представлении, по которому можно перемещаться, извлекать, вставлять данные с помощью методов DOM объекта. Наиболее жоркий с точки зрения памяти. Но позволяет легко сохранить XML документ без лишних движений, потому как преоразование из внутреннего представления в XML разметку происходит естественным алгоритмом, практически напрямую.

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

По поводу Stream ничего внятного не скажу.
Записан

Собираю информацию по крупицам
http://webhamster.ru
Dendy
Гость
« Ответ #2 : Январь 22, 2009, 01:45 »

Ну только если ты не будешь через SAX распарсивать документ в самодельную древовидную структуру. Но в этом случае прощще воспользоваться DOM, чем городить огород.

Согласен. Хочется добавить, что создание дерева DOM из крупного XML (несколько Мб) ест память как попкорн, а вместе с ним и время процессора. Поэтому если задача предполагает что потенциально на вход подастся толстый XML - лучше сразу парсить его через SAX, производительность увеличится на порядки.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.