Russian Qt Forum
Ноябрь 22, 2024, 16:03
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
XML
>
Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks (Прочитано 3908 раз)
neosapient
Гость
Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks
«
:
Январь 22, 2009, 00:25 »
Добрый день.
Вопрос ламера.
В стандартных примерах QT4 есть три схожие программы dombookmarks, saxbookmarks, streambookmarks.
Хочется понять, зачем писали именно три схожих примера? Чем по функциональности отличаются базовые классы, на которых основаны данные примеры (dom, sax, stream)?
Есть тезис, о том, что приходиться выбирать между быстротой(скорость исполнения), ценой(размер программы) и качеством(наверно, удобство в использовании). Какая из представленных программ демонстрирует самую высокую скорость разбиения xml-текста на базовые элементы (имеется в виду очень большой документ с глубиной вложености в 2-3 тега)?
«
Последнее редактирование: Январь 22, 2009, 00:38 от neosapient
»
Записан
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks
«
Ответ #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
Гость
Re: Что работает быстрее? Сравнение dombookmarks, saxbookmarks, streambookmarks
«
Ответ #2 :
Январь 22, 2009, 01:45 »
Цитата: xintrea от Январь 22, 2009, 01:20
Ну только если ты не будешь через SAX распарсивать документ в самодельную древовидную структуру. Но в этом случае прощще воспользоваться DOM, чем городить огород.
Согласен. Хочется добавить, что создание дерева DOM из крупного XML (несколько Мб) ест память как попкорн, а вместе с ним и время процессора. Поэтому если задача предполагает что потенциально на вход подастся толстый XML - лучше сразу парсить его через SAX, производительность увеличится на порядки.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...