почему анализ саксофона происходит быстрее, чем анализ синтаксиса? и как работает stax?

несколько связано с:libxml2 из Java

да, этот вопрос довольно многословен - извините. Я держался настолько плотно, насколько мне казалось возможным. Я набросал вопросы, чтобы было легче взглянуть на них, прежде чем читать все это.

Почему разбор саксофона быстрее, чем разбор дом? Единственное, что я могу придумать, это то, что вы, вероятно, игнорируете большую часть поступающих данных и не тратите время на обработку тех частей XML, которые вам не нужны. IOW - после разбора w / SAX вы не можете восстановить исходный ввод.Если бы вы написали свой синтаксический анализатор SAX так, чтобы он учитывал каждый узел xml (и, таким образом, мог воссоздать оригинал), то он был бы не быстрее, чем DOM, не так ли?

Причина, по которой я спрашиваю, состоит в том, что я пытаюсь разобрать документы XML быстрее. Мне нужно иметь доступ ко всему XML-дереву ПОСЛЕ разбора. Я пишу платформу для подключаемых сторонних сервисов, поэтому не могу предвидеть, какие части XML-документа понадобятся, а какие - нет. Я даже не знаю структуру входящего документа. Вот почему я не могу использовать jaxb или sax. Объем памяти не проблема для меня, потому что XML-документы маленькие, и мне нужно только 1 в памяти за раз. Это время, которое требуется для анализа этого относительно небольшого XML-документа, который убивает меня. Я раньше не использовал stax, но, возможно, мне нужно продолжить расследование, потому что это может быть золотая середина?Если я правильно понимаю, Stax сохраняет исходную структуру XML и обрабатывает части, которые я запрашиваю по требованию? Таким образом, исходное время разбора может быть быстрым, но каждый раз, когда я прошу его пройти часть дерева, которое еще не пройдено, происходит ли тогда обработка?

Если вы предоставите ссылку, которая отвечает на большинство вопросов, я приму ваш ответ (вам не нужно напрямую отвечать на мои вопросы, если они уже были даны в другом месте).

обновление: я переписал его на саксофоне, и он анализирует документы в среднем 2,1 мс. Это улучшение (на 16% быстрее) по сравнению с 2,5 мс, которые принимал Дом, однако это не та величина, которую я (и другие) предположил бы

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос