Информационный портал
pocket versionPOCKET  wikiWIKI  FAQFAQ  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ПрофильПрофиль  Войти и проверить личные сообщенияВойти и проверить личные сообщения  ВходВход

Разбираем FB2 - DOM, SAX, VTD.

 
Найти сообщения без ответов
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> FB - разработка и программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение


Admin
Администратор информационного портала FB

Администратор информационного портала FB

Зарегистрирован: 11.06.2004
Сообщения: 1610
Откуда: Воронеж

СообщениеДобавлено: Чт Фев 01, 2007 8:07    Заголовок сообщения: Разбираем FB2 - DOM, SAX, VTD. Ответить с цитатой

Достоинства и недостатки каждой разборки (парсинга), кто что скажет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail


Mike Sinkovsky
Зрелый участник форума

Зрелый участник форума

Зарегистрирован: 27.10.2005
Сообщения: 296
Откуда: Пермь

СообщениеДобавлено: Чт Фев 01, 2007 9:40    Заголовок сообщения: Ответить с цитатой

С сайта http://vtd-xml.sourceforge.net/
Конечно они больше себя хвалят, но лично я с ними согласен.

Comparison with DOM, SAX and PULL

Processing Model Description
VTD: In memory cursor based on "non-extractive" VTD records (Virtual Token Descriptor)
DOM: In memory object model based on Node object and "extractive" tokens
SAX/PULL: Low-level tokenizer based on "extractive" tokens

Performance
VTD: Fastest (outperform SAX with Null Content handler)
DOM: Slowest
SAX/PULL: Second fastest, Raw speed un-indicative of its real world performance

Memory Usage
VTD: 1.3x ~1.5x of the document size
DOM: 5x~10x of the document size
SAX/PULL: Doesn't grow with document size

Random Access
VTD: Yes
DOM: Yes
SAX/PULL: No, Forward only

Usability
VTD: Excellent (shortest code for most given tasks)
DOM: Very good
SAX/PULL: Poor

Incremental Modification
VTD: Yes
DOM: No
SAX/PULL: No

Inherent Persistence (avoid parsing every time)
VTD: Yes
DOM: No
SAX/PULL: No

Hardware Implementation
VTD: Yes
DOM: N/A
SAX/PULL: N/A
Вернуться к началу
Посмотреть профиль Отправить личное сообщение


Admin
Администратор информационного портала FB

Администратор информационного портала FB

Зарегистрирован: 11.06.2004
Сообщения: 1610
Откуда: Воронеж

СообщениеДобавлено: Чт Фев 01, 2007 10:03    Заголовок сообщения: Ответить с цитатой

Спасибо. Это я вчера прочитал Very Happy
Интересуют взгляды с точки зрения практики. Теоретически, похоже, VTD вне конкуренции. Я пользовал DOM, сделав оболочку для FB2 в Delphi на встроенный парсер, который сам являлся оболочкой для MSXML. Разбирать удобно, с размерами памяти и скоростью согласен, но мне это было не критично. Критично для ридела. Практически (еще не вник) можно ли на его основе сделать ридер под mobile windows (Pocket PC)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail


babaev
Новенький участник форума

Новенький участник форума

Зарегистрирован: 31.01.2007
Сообщения: 71
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 01, 2007 10:30    Заголовок сообщения: Ответить с цитатой

На мой взгляд - сравнение по скорости некорректное. Они сравнивают сканирование. А для нужд библиотеки нужно сравнивать две части: первичное сканирование для создания книжки в памяти + беготня по книжке. И если для первой части - порядок возможно верный, то для второй, например, SAX просто не годится. А DOM и VTD - думаю, будут примерно равны по скорости (но DOM - часто или удобнее, или единственно возможным, они сами это подтверждают, там что-то типа "для сложных запросов все-равно вам придется использовать DOM")

Также нужно сравнить по памяти. DOM - делает полную структуру в памяти, причем иерархическую. Это даже не столь большой overprint, сколько просто файл бывает большой. Например, что делать, если файл мегабайтов пять? Для десктопа все-равно, это-то да. А для КПК?

VTD - также предполагает, насколько я понял, хранение самого файла в памяти + некая структура для ускорения доступа к частям файла. То есть тот же DOM, вид сбоку. С измененными приоритетами скорости доступа. В DOM - доступ ко всем веткам одинаково (среднебыстрый, например), а с VTD - к некоторым быстрее, к некоторым медленнее.

SAX и StAX - опять же, применябельны только для чтения. После чего они обязаны создать что-то в памяти для дальнейшего чтения книжки. Хотя я, наверное, могу себе представить двунаправленный ридер, который читает непосредственно из файла и рисует странички.

Ридер для PocketPC можно сделать и там и там и там. Поэтому нужно понять, чем можно пожертвовать, а что лучше уменьшить. И по каким-то критериям выбирать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора


Admin
Администратор информационного портала FB

Администратор информационного портала FB

Зарегистрирован: 11.06.2004
Сообщения: 1610
Откуда: Воронеж

СообщениеДобавлено: Чт Фев 01, 2007 16:59    Заголовок сообщения: Ответить с цитатой

babaev писал(а):
Например, что делать, если файл мегабайтов пять? Для десктопа все-равно, это-то да. А для КПК?

При оперативке в 64 Мб тоже не проблематично.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail


babaev
Новенький участник форума

Новенький участник форума

Зарегистрирован: 31.01.2007
Сообщения: 71
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 01, 2007 17:11    Заголовок сообщения: Ответить с цитатой

Admin
Оперативка 64 мегабайта - забивается очень и очень быстро. И резидентами и "многозадачностью". У меня после запуска системы, загрузке PIM'а и пары нужных приложений (аська, иногда скайп) для читалки остается около 4-5 метров. Это на Acer N311, далеко не самом старом КПК.

Так что память - пока еще критичная вещь. Для КПК - тоже. На мой взгляд это учитывать стоит.

Опять же, хорошо бы смотреть, куда эта память уходит. Если в скорость - это одно, если в удобство работы - тоже хорошо. Если же память забраласть приложением просто потому что ее много - это плохое приложение.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.fictionbook.org -> FB - разработка и программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group