Как ускорить функцию Saxon doc ()? - PullRequest
0 голосов
/ 04 октября 2011

У меня есть 12-мегабайтный XML-файл, к которому я обращаюсь из xquery. Файл загружается примерно так:

let $t := doc('file:///C:/foo/bar/file12mb.xml')

Выполнение кода занимает около 950 мс.

Как можно быстрее загрузить документ XML? После загрузки и анализа xml-файла тело xquery запускается всего за несколько миллисекунд, поэтому я пытаюсь ускорить первоначальную загрузку и синтаксический анализ xml-файла, который занимает большую часть времени выполнения.

Есть ли у Саксона возможность сохранить документ XML после его анализа? В идеале я хотел бы как-то сохранить файл данных xml, но Saxon, похоже, предназначен исключительно как процессор xml, а не база данных xml.

Поможет ли схема? В настоящее время XML-файл не имеет связанной схемы. Документация Saxon подразумевает, что наличие схемы ускоряет выполнение запроса, но замедляет первоначальную загрузку и синтаксический анализ данных xml, поэтому я не пытался создать схему.

Любые предложения с благодарностью получены.

Версия

java version "1.6.0_26"
Saxon-B version 9.1.0.8

1 Ответ

0 голосов
/ 05 октября 2011

Звучит довольно быстро при разборе файла размером 12 МБ. Я не думаю, что вы можете оптимизировать это, и нет, Saxon не является базой данных.

В MarkLogic парсинг XML происходит только один раз: во время загрузки. В других базах данных, таких как Oracle, это может иметь место, а может и не быть, в зависимости от того, как вы его загружаете.

...