powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проект "ApolloSAX"
13 сообщений из 63, страница 3 из 3
Проект "ApolloSAX"
    #38134718
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik,

Мы говорим с Вами об одном и том же только разными словами

Рассуждая о SAX я рассматриваю данную статью: http://ru.wikipedia.org/wiki/SAX
"SAX-парсинг" в моём понимании - это процесс распарсивания XML, при котором каждая прочитанная единица отправляется системе в соответствующий калбек. Далеко не всегда удобный способ, но зато самый быстрый - потому что требует минимального потребления памяти и не содержит логики увязывания элементов и атрибутов между собой
"DOM-парсинг" в моём понимании - это процесс распарсивания XML, при котором получится иерархическое представление XML-документа, где в простейшем случае элементы будут содержать имя, список атрибутов, значение элемента, список элементов-детей и указатель на элемент-отца; атрибуты - это пара имя/значение. "DOM-парсинг" очень просто построить на основе "SAX-парсинга".
"XML-Binding" - это высокоуровневый механизм для работы с XML-документами. Но это надстройка над DOM.

> назову его pull-парсер, т. к. он не выталкивает данные, а их нужно вытягивать

я таки думаю, что там в основе всё тот же SAX-парсер. Ибо вообще сложно реализовать парсер, который разбирает семантику документа, отслеживает ошибки, перекодирует строки из XML в обычные, улаживает вопросы с кодировкой... Зачем для всего .NET писать несколько парсеров, когда можно написать производительный один, отладить его, и использовать для всех остальных разного уровня задач. Судя по Вашему описанию "pull-парсер" это высокоуровневая надстройка над обычным парсером (который я называю SAX)

> Чтобы ускорить клиентский код, имеется таблица имён (NameTable),
> куда можно занести заранее имена элементов, которые будут в xml,
> и в итоге сравнивать уже не строки (что медленно), а ссылки.


вот мы и подошли к вопросу, который я описывал ещё в самом первом своём сообщении ветки. Для того чтобы оперативно идентифицировать строки, правильнее использовать не сравнения строк, а сравнения ID-констант. В приведённом Вами примере используются не инты, а ссылки. Я о чём и говорю. "NameTable" это механизм отнесения строки к какому-то идентификатору. Для подобных задач хорошо зарекомендовали себя хеш-таблицы. Я сам очень часто использую хеш-таблицы, в том числе и для идентификации строк.

Но! Когда полный список необходимых тебе идентификаторов известен ещё до компиляции, существует в разы более эффективный способ их распознавания. Не нужно выполнять hash-функцию, не нужно хранить и управлять хеш-массивом, не нужно сравнивать строку со строкой в массиве. Я разработал утилиту, которая генерирует код, позволяющий однозначно идентифицировать и с максимальной скоростью. Опять таки посмотрите первое сообщение. Там 6 строк, определяющихся моментально. А может быть сколько угодно.

> Опять же, приведу в пример дотнетовский pull-парсер - он тщательно вылизан,
> с кучей ручных оптимизаций, и работает настолько быстро (бьюсь об заклад, вам его не побить ;) )

я не первый день живу на бренной земле :)
и подобных выражений выслушал уже не один десяток )
и когда проводится очередной тест, на котором моя реализация побеждает в разы, вместо дико восторженных возгласов "отныне ты наш бог и сенсей" я слышу что-то типа "ну для данной задачи особо то дополнительная производительность и не нужна, вот ты столько времени потратил, а мог взять стандартное решение, вот ты реализовал на ассемблере, но твоё решение не кроссплатформенное". Люди редко могут отходить от зарекомендовавших себя подходов. Люди редко способны разглядеть истинные перспективы. (Русские) люди редко искренне порадуются классным идеям других людей. И почти никогда не признают превосходство коллеги над собой
Буквально неделю назад три дня бился над одним тестовым проектом. Ребята работают в какой-то крупной конторе, в которой в частности нужно делать мегакрутой поиск. От СУБД отказались ввиду специфики. У конкурентов поиск идёт полторы минуты, у них около 6 секунд. Ну так и вот. Присылают им множество баз, по которым собственно и нужно проводить поиск. Была идея объединить все базы в одну и работать с ней. Написали прогу, она справлялась с задачей 2 часа. Сложность в том, что в базах происходит частое дублирование ключей, и объединение по сути предполагает поиски и в случае нахождения - объединение данных. Оказалось что 2 часа это очень много. То ли баз планируется иметь ещё больше, то ли обновления частые. Не суть. Решили реализовать поиск по нескольким базам, а не по одной общей.

Потом ради интереса, чувак, который эту утилиту разрабатывал, решил её максимально оптимизировать. Долго с ней мучился, в итоге выдал около 10 минут. Чем был безмерно горд. Я сказал, что моя стихия это оптимизации, и у меня наверняка такая утилита будет работать минуту :). В общем он дал мне исходники и данные. Я увидел несколько слабых мест и оптимизировал целых три дня, выжимал максимум. Получилась 1:12. И знаете что по итогу он мне сказал? "Ну респект конечно. Но разница всёравно небольшая". Конечно они не стали использовать эту утилиту, ибо уже реализован многобазный поиск. Но мне кажется такая реализация достойна чуть большей похвалы ). Ибо работала бы изначально такая утилита минуту-двенадцать, а не 2 часа - не было бы необходимости разрабатывать многобазную архитектуру
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134719
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_

я честно говоря не понял, где я Вас обидел, унизил, оскорбил. К чему такая реакция ?
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134856
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Перестаньте кормить тролля. Вы разве не видите, что человек неадекватный?
Тс-с! Не спугни... :D
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134864
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне прям стало интересно
с каких пор желание, умение и опыт делать качественное программное обеспечение стало проявлением неадекватности )

а вообще извольте извиниться
если вы чего то не догоняете - это не повод оскорблять меня неадекватом
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134865
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUя таки думаю, что там в основе всё тот же SAX-парсер.
Нет. Из pull-парсера легко сделать sax. Наоборот - нельзя.


В основе парсинга лежит лексер. Он выдаёт поток токенов. Для xml этот токены должны соответствовать Xml Information Set. Что с ним будет делать парсер (принимающий токены от лексера или имеющий его в своём составе) - дело второстепенное. Он может зажигать события (SAX) или просто предлагать информацию об элементах xml (тот самый InfoSet) клиенту.


Из вашего описания невозможно толком ничего понять. На сём я пока прекращаю дискуссию. Подожду готовый пример парсера, который можно запустить, пощупать, испытать в деле. Готов поучаствовать в его тестировании, высказывая обоснованную критику и пожелания по доработке.
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134868
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Признаком неадекватности является расхваливание на все лады того, чего еще нет, и сравнением в его же пользу с тем, что уже есть и прекрасно себя зарекомендовало.
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134871
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikВ основе парсинга лежит лексер. Он выдаёт поток токенов. Для xml этот токены должны соответствовать Xml Information Set. Что с ним будет делать парсер (принимающий токены от лексера или имеющий его в своём составе) - дело второстепенное. Он может зажигать события (SAX) или просто предлагать информацию об элементах xml (тот самый InfoSet) клиенту.
и в чём состоит разница по Вашему между "лексером" и SAX ?
в любом случае срабатывает событие, идентифицирующее о начале элемента, о поступившем атрибуте, поступившем значение элемента, о конце элемента. Точь в точь функционал SAX. Над которым уже можно стоить надстройки

petalvikИз вашего описания невозможно толком ничего понять.
что конкретно Вам не удалось понять ?
я написал, чтобы было понятно любому школьнику. Может быть Вы не знаете, что такое хеш-массив или ID-константа ?
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134873
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

а по моему признак неадекватности - совать нос куда только можно. по поводу и без

по поводу расхваливания
мой опыт позволяет на уровне алгоритма и планируемой реализации определить, что быстро, что нет, что удобно, что нет. Может быть тебе говорит о чём-то такое слово как "проектирование"
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134875
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUи в чём состоит разница по Вашему между "лексером" и SAX ?
Разница в том, что лексер выдаёт поток токенов. Парсер выдаёт Infoset. Парсер xml выдаёт Xml Information Set.
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134880
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikРазница в том, что лексер выдаёт поток токенов. Парсер выдаёт Infoset. Парсер xml выдаёт Xml Information Set.
в чём отличие:
1) токенов, выдаваемых XML-лексером
2) Infoset для SAX
3) Infoset для pull
4) Infoset для DOM
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134883
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUМожет быть тебе говорит о чём-то такое слово как "проектирование"Что все остальные создатели парсеров идиоты и писали их на коленке?
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38134886
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy

парсеры парсерам рознь
есть PugiXML, а есть MS XML
и те и те умные. Только одни находчивее других
...
Рейтинг: 0 / 0
Проект "ApolloSAX"
    #38167354
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тему закрываю. Обсуждение перешло на межличностный конфликт. К xml относится косвенно.

Автору топика рекомендую искать соратников в разделе "Работа".
...
Рейтинг: 0 / 0
13 сообщений из 63, страница 3 из 3
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проект "ApolloSAX"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]