Высокая загрузка ЦП при использовании библиотеки Saxon - PullRequest
0 голосов
/ 28 марта 2012

Я использую библиотеку Saxon Java для объединения двух файлов. Файл XSLT находится здесь .

Я считаю, что даже с двумя небольшими XML-файлами (~ 15 узлов каждый) загрузка ЦП резко возрастает, когда Saxon объединяет файлы. Я также попытался использовать Saxon для другого атрибута изменения варианта использования небольшого XML-файла (~ 15 узлов), и нашел тот же результат.

В целом, обрабатывает ли XSLT нагрузку на процессор? или это известное поведение саксонцев?

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Я думаю, что таблица стилей слияния Оливера Беккера имеет производительность O (n ^ 2), то есть, если вы удвоите размер ввода, это займет в четыре раза больше времени.Это не общее свойство XSLT, это свойство алгоритма, который использует Оливер.Код, вероятно, можно было бы сделать намного более эффективным (хотя и по-прежнему квадратичным), воспользовавшись функцией XSLT 2.0 deep-equal (), но для более радикального пересмотра, чем это, потребуется разработка другого алгоритма: например-процесс обработки через оба дерева, который вычисляет хеш-код для каждого узла, так что последующее тестирование на эквивалентность двух деревьев сводится к сравнению двух хеш-кодов.

1 голос
/ 28 марта 2012

IMHO XSLT очень сильно загружает процессор, но для небольшого файла он все равно должен быть кратким.

Я предлагаю вам написать простой бенчмарк, чтобы узнать, сколько времени потребуется для преобразования небольшого файла. Убедитесь, что ваша JVM прогрелась, выполнив перевод не менее 10 000 раз, и проверьте, сколько времени потребуется, если она повторяется не менее 2 секунд ПОСЛЕ разогрева.

...